1

该程序应该向用户询问一个数字,然后循环直到输入不是数字(如果有数字输入则重复)。到目前为止我的代码:

import java.util.*;

public class MataVarden
{
    public static void main(String[] args) throws Exception
    {   
        Scanner sc = new Scanner(System.in);    
        ArrayList<Integer> Values = new ArrayList<Integer>(); 

        System.out.print("Input a number: ");
        Values.add(sc.nextInt()); 

        Collections.sort(Values);
        System.out.println("Values sorted: " + Values);
    }
}

如果输入了非数字,您需要做什么才能中断输入?

4

1 回答 1

1

在这些情况下使用 while 循环。

System.out.println("Input a number");
String line = "";
while (sc.hasNextLine() && !(line = sc.nextLine()).equals("")) {
    try {
        int val = Integer.parseInt(line);
        values.add(val);
    } catch (NumberFormatException e) {
        break;
    }

    System.out.println("Input a number");
}

好的,这是对那里发生的事情的解释:-

  • sc.hasNextLine()检查是否有要读取的输入。如果是,则继续下一个测试
  • !(line = sc.nextLine()).equals("")检查下一个输入是否为 an empty string。如果是空字符串,则条件失败,循环结束。
  • 由于我们正在使用nextLine()方法读取输入,因此我们必须使用将其解析为整数Integer.parseInt(line);
  • 我们需要将它封装在一个try-catch块中来处理像这样的输入"abc",它不会被解析为整数,并且会抛出异常,在这种情况下,我们会while loopcatch block.
  • 请注意,我没有使用过sc.nextInt(),因为它不会从输入中读取换行符。因此,没有任何方法可以知道何时终止循环。

作为旁注,您应该始终遵循代码中的编码约定。您的变量名称应以小写字母开头。

于 2012-11-29T20:27:13.103 回答