我正在编写一个Java应用程序,它允许用户输入多个整数值并将它们插入到ArrayList中。在输入每个项目后,应询问用户是继续输入数据还是退出应用程序。
除了我必须输入一个double值以查看抛出的异常类型。一旦确定,就编写一个处理特定异常的Try / Catch语句,并允许用户继续输入数据(而不是让应用程序崩溃)。
这是我到目前为止所拥有的:
import java.util.Scanner;
import java.util.ArrayList;
public class Tester{
public static void main(String[] args){
ArrayList<Integer> myArrayList = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("please enter an integer: ");
integer.add(input.next());
到目前为止,我已经创建了ArrayList并提示用户完成输入,现在我无法继续询问用户输入或要求他们停止进程(我该怎么做?)
另外我如何编写try / catch块部分?我明白了'尝试'&#39; part必须包含可能导致异常的语句。那么我该如何写出类似的内容:
try {
if input = double
System.out.print("This is an error")?
}
catch(inputMismatchexception e){
....
}
答案 0 :(得分:0)
这就是你需要的:
normalization_fn
如果输入不是Integer,则抛出InputMismatchError,从而覆盖Double输入大小写。
在此之后,只需提示用户确认是否要继续(类似于Ravi在他的回答中所写的内容)。
答案 1 :(得分:0)
我无法继续询问用户输入或询问 他们要停止这个过程
在你的while循环中
System.out.println("Do you want to continue ?? (Y/N) ");
String str = input.next();
if(str.equals("N")
{
break;
}
答案 2 :(得分:0)
input.next()
总是会给你一个字符串,所以你需要做的就是使用Integer.parseInt(input)
并检查NumberFormatException
。
import java.util.Scanner;
import java.util.ArrayList;
public class Tester{
public static void main(String[] args){
ArrayList<Integer> myArrayList = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("please enter an integer: ");
try {
int value = Integer.parseInt(input.next());
myArrayList.add(value);
} catch (NumberFormatException e) {
// TODO whatever you want to do here
}
}
}
答案 3 :(得分:0)
您正在走错误的路径:您打算使用例外来控制 flow 程序
这是可能的;但不被视为&#34;良好做法&#34;在java。
顾名思义,例外情况是例外(又名错误)情景。但是用户想要停止该程序 - 这不是一件特别的事情;这应该是你的逻辑的核心部分!
从这个意义上说:只需使用您的Scanner对象向用户询问字符串即可。在将这些字符串转换为数字之前;例如,你可以检查字符串是否为空。或者,如果字符串是equalIgnoreCase()到&#34;退出&#34;。允许用户通过点击&#34;输入&#34;或键入&#34;退出&#34;来停止程序。
记录:你也可以使用例外;只需要Integer.parseInt(&#34;任何不是int数字的字符串&#34;)都会抛出NumberFormatException。
但正如所说:捕捉那些并假设用户故意这样做到最后循环是糟糕的想法。如果用户没有注意,该怎么办?打错了,不想停止?!如果你告诉他并没有输入一个有效的号码,再试一次&#34;会不会更好?