Je développe un programme pour la classe.
J'ai besoin de lire l'entrée de l'utilisateur à l'aide de la classe scanner. Je dois ensuite transmettre ces données à une liste de tableaux avec une boucle while. Dans ma boucle while, j'ai besoin d'une instruction conditionnelle pour vérifier si un 0 ou un nombre négatif est entré.
Si l'utilisateur entre un nombre négatif ou un 0, la boucle se termine et le code passe au processus suivant ...
Les problèmes auxquels je suis actuellement confronté sont:
-Toutes mes valeurs d'entrée ne sont pas traitées
-Je dois entrer la valeur 0 3 fois pour sortir de la boucle
-0 est transmis à ma liste de tableaux que je ne veux pas
Voici mon code pour l'instant:
import java.util.*;
public class questionAvg3
{
public static void main(String[]args)
{
Scanner input_into = new Scanner(System.in);
ArrayList<Integer> collector = new ArrayList<Integer>();
System.out.println("Enter 0 or a negative number to end input");
System.out.println("Enter a positive integer to populate the arraylist");
while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
System.out.println("Type another int or exit");
collector.add(input_into.nextInt());
}
int minValue = collector.get(0);
int maxValue = collector.get(0);
//int avgValue = collector.get(0);
//int total = 0;
for(Integer i: collector){
if( i < minValue) minValue = i;
if( i > maxValue) maxValue = i;
}
System.out.println("The max value int is: " + maxValue);
System.out.println("The min value int is: " + minValue);
}
}
Votre problème est ici:
while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
System.out.println("Type another int or exit");
collector.add(input_into.nextInt());
}
La raison pour laquelle vous devez entrer le 0 trois fois est que vous appelez input_into.nextInt()
trois fois!
Cela signifie que votre programme attend un entier, évalue l'entrée en fonction de votre comparaison, puis recommence, et enfin une dernière fois pour votre collector.add()
.
Je pense qu'il est important que vous compreniez un peu mieux comment utiliser les opérateurs de comparaison.
Par exemple, lorsque vous dites que vous dites (input_into.nextInt() !=0) || (input_into.nextInt() < 0)
littéralement que le nombre est inférieur à zéro ou supérieur à zéro. Puisque votre valeur sentinale est n'importe quel nombre qui est <= zéro, vous ne voulez continuer que si votre entrée est SUPÉRIEURE à zéro. Cela vous donne ce qui suit
int input = input_into.nextint();
while (input > 0){
System.out.println("Type another int or exit");
collector.add(input);
input = input_into.nextint();
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots