J'essaie de remplacer des éléments spécifiques d'un tableau d'entiers, basés sur une condition, par des chaînes. J'identifie les éléments int qui doivent être remplacés en utilisant l'opérateur modulus.
Source.java:11: error: inconvertible types numbers[i] = (int) "FizzBuzz"; ^ required: int found: String Source.java:13: error: inconvertible types numbers[i] = (int) "Buzz"; ^ required: int found: String Source.java:15: error: inconvertible types numbers[i] = (int) "Fizz"; ^ required: int found: String 3 errors
J'obtiens l'erreur:
class Source { public static void main(String args[]) { int[] numbers = { 1, 2, 34, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; fizzBuzz(numbers); } public static void fizzBuzz(int[] numbers) { // Write the function body here for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 3 == 0 && numbers[i] % 5 == 0) { numbers[i] = "FizzBuzz"; } else if (numbers[i] % 5 == 0) { numbers[i] = "Buzz"; } else if (numbers[i] % 3 == 0) { numbers[i] = "Fizz"; } else { numbers[i] = numbers[i]; } System.out.print(numbers[i] + " "); } } }
p >
3 Réponses :
Un tableau déclaré comme un tableau d'entiers ne peut pas être rempli de chaînes, car Java est un langage fortement typé.
Voici comment vous pouvez atteindre le même objectif sans enfreindre les principes de Java. Vous pouvez imprimer le résultat dès qu'il est trouvé en fonction de la logique.
class Source { public static void main(String args[]) { int[] numbers = {1,2,34,5,6,7,8,9,10,11,12,13,14,15}; fizzBuzz(numbers); } public static void fizzBuzz(int[] numbers) { //Write the function body here for(int i = 0; i < numbers.length; i++){ if(numbers[i] % 3 == 0 && numbers[i] % 5 == 0){ System.out.print("FizzBuzz" + " "); }else if(numbers[i] % 5 == 0){ System.out.print("Buzz" + " "); }else if(numbers[i] % 3 == 0){ System.out.print("Fizz" + " "); }else { System.out.print(numbers[i] + " "); } } } }
Cela fait parfaitement le travail :) Merci @Chana
Vous devez utiliser une String []
au lieu d'un int []
. Java n'autorise pas le stockage des valeurs String
dans une variable ou un tableau int
. Vous pouvez stocker des valeurs du même type ou d'un sous-type dans une variable ou un tableau.
Procédez comme suit:
[1, 2, 34, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz]
Sortie:
import java.util.Arrays; public class Source { public static void main(String args[]) { int[] numbers = { 1, 2, 34, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; String[] arr = new String[numbers.length]; fizzBuzz(numbers, arr); System.out.println(Arrays.toString(arr)); } public static void fizzBuzz(int[] numbers, String[] arr) { // Write the function body here for (int i = 0; i < numbers.length; i++) { if (numbers[i] % 3 == 0 && numbers[i] % 5 == 0) { arr[i] = "FizzBuzz"; } else if (numbers[i] % 5 == 0) { arr[i] = "Buzz"; } else if (numbers[i] % 3 == 0) { arr[i] = "Fizz"; } else { arr[i] = String.valueOf(numbers[i]); } } } }
[1, 2, 34, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz]
Sortie: p>
import java.util.Arrays; public class Source { public static void main(String args[]) { String[] numbers = { "1", "2", "34", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" }; fizzBuzz(numbers); System.out.println(Arrays.toString(numbers)); } public static void fizzBuzz(String[] numbers) { // Write the function body here for (int i = 0; i < numbers.length; i++) { int n = Integer.parseInt(numbers[i]); if (n % 3 == 0 && n % 5 == 0) { numbers[i] = "FizzBuzz"; } else if (n % 5 == 0) { numbers[i] = "Buzz"; } else if (n % 3 == 0) { numbers[i] = "Fizz"; } else { numbers[i] = numbers[i]; } } } }
J'ai aimé cette approche alternative @Arvind, merci pour la réponse :), les gars, c'est super !!!
J'essaie de
remplacer
des éléments spécifiques d'un tableau deentiers
, en fonction de certaines conditions, par deschaînes
.Dans ce cas particulier, le moyen le plus simple est de stocker les entiers dans le tableau d'origine sous forme d '
Objets
. Ensuite, il vous suffit de les convertir en unint
pour travailler avec eux.[1, 2, 34, Fizz, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz]Impressions
public static void main(String args[]) { Object[] numbers = {1,2,34,5,6,7,8,9,10,11,12,13,14,15}; fizzBuzz(numbers); System.out.println(Arrays.toString(numbers)); } public static void fizzBuzz(Object[] numbers) { int i = 0; for (Object o : numbers) { int n = (int)o; boolean t3 = n % 3 == 0; boolean t5 = n % 5 == 0; numbers[i] = t3 && t5 ? "FizzBuzz" : t3 ? "Fizz" : t5 ? "Buzz" : n; i++; } }Points à considérer.
- établissez les résultats booléens
une fois
puis appliquez-les simplement à un opérateurternaire
chaîné. L'opérateur ternairea? B: c
signifiesi a est vrai alors b, sinon c
- puisque cela utilise des
objets
, il n'y a pas de problème pour remettre le résultat (soitString ou int
) dans le tableau- et comme vous n'utilisez que des entiers pour commencer, vous n'obtiendrez pas d'exception de conversion de classe lorsque vous effectuez
(int)o
Pourquoi essayez-vous de le faire de cette façon? Pourquoi ne pas simplement obtenir la chaîne basée sur les chèques et l'imprimer?
Vous ne pouvez pas stocker String dans un tableau int [].
Merci à tous pour les premières réponses @Maverick merci pour les informations ChiefTwoPencils Je suis un débutant et j'expérimente avec le matériel d'apprentissage