创建条件语句以与扫描仪输入相对应

时间:2015-10-21 17:56:44

标签: java arrays conditional

我正在为课堂开发一个程序。

我需要使用扫描仪类读取用户的输入。 然后我需要将这些数据传递给带有while循环的数组列表。 在我的while循环中,我需要一个条件语句来检查输入的是0还是负数 如果用户输入负数或0,则循环结束,代码移动到下一个进程...

我目前面临的问题是:

- 我的所有输入值都没有被处理

- 我必须输入值3 3次才能退出循环

-0正在传递到我不想要的数组列表

到目前为止,这是我的代码:

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);

}
}

3 个答案:

答案 0 :(得分:5)

while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
    System.out.println("Type another int or exit");
        collector.add(input_into.nextInt());
    }

确实需要传递3个整数。因为nextInt总是在寻找下一个输入值。

您需要的是

int input = input_into.nextInt();
  while ((input !=0) || (input < 0)){
        System.out.println("Type another int or exit");
            collector.add(input);
            input = input_into.nextInt();
        }

答案 1 :(得分:1)

你的问题就在这里:

while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
System.out.println("Type another int or exit");
    collector.add(input_into.nextInt());
}

你必须输入三次的原因是因为你正在呼叫input_into.nextInt() 3次!

这意味着您的程序正在等待整数,根据您的比较评估输入,然后再次执行此操作,最后再次使用collector.add()

我认为了解如何更好地使用比较运算符非常重要。

例如,当你说(input_into.nextInt() !=0) || (input_into.nextInt() < 0)时,你确实说这个数字小于零或大于零。 由于您的sentinal值是任何<= 0的数字,因此您只想在输入大于零时继续。这给你以下

    int input = input_into.nextint();
    while (input > 0){
       System.out.println("Type another int or exit");
       collector.add(input);
       input = input_into.nextint();
    }

答案 2 :(得分:0)

在循环中使用变量并使用它来测试循环连续条件

  int variable=input.nextInt(); //get initial input

  while (variable<=0)
    {
        //get next input
        variable=input.nextInt();
    }//end while

这将循环直到输入为&lt; = 0