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
remplacerdes é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 unintpour 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 foispuis appliquez-les simplement à un opérateurternairechaîné. L'opérateur ternairea? B: csignifiesi 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