正确实现关于整数ArrayLists的try / catch语句

时间:2017-03-23 17:25:41

标签: java try-catch

我正在编写一个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){
....
}

4 个答案:

答案 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;会不会更好?