该程序应该向用户询问一个数字,并循环直到输入不是数字(如果有数字输入则重复)。 到目前为止我的代码:
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);
}
}
如果输入非号码,您需要做什么才能打破输入?
答案 0 :(得分: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("")
检查下一个输入是否为empty string
。如果它是一个空字符串,则条件失败,循环结束。nextLine()
方法读取输入,我们必须使用Integer.parseInt(line);
try-catch
块中以处理像"abc"
这样的输入,这些输入不会被解析为整数,并且会抛出异常,在这种情况下,我们会突破来自while loop
。{/ li>的catch block
sc.nextInt()
,因为它没有从输入中读取换行符号。因此,没有任何方法可以知道何时终止循环。作为旁注,您应始终遵循代码中的编码约定。您的变量名称应以小写字母开头。