Java 检查列表中的非整数值

Java 检查列表中的非整数值,java,Java,我试图遍历字符串列表,检查其中一个字符串是否不能解析为整数。如果其中一个不能解析为整数,则抛出FormatException。但我的支票似乎不起作用。有一个错误,我不知道为什么或如何解决它 String s = strLine; List myList = new ArrayList<String>(Arrays.asList(s.split(" "))); List<Integer> intList; for (int i

我试图遍历字符串列表,检查其中一个字符串是否不能解析为整数。如果其中一个不能解析为整数,则抛出FormatException。但我的支票似乎不起作用。有一个错误,我不知道为什么或如何解决它

        String s = strLine;
    List myList = new ArrayList<String>(Arrays.asList(s.split(" ")));
    List<Integer> intList;
        for (int i=0;i<myList.size();i++) {
            //Check if all the values are integers
            try {

               /*Problem area----->*/ intList[i] = Integer.parseInt( (String) myList.get(i) );

            } catch (Exception e) {
                throw new FormatException();
            }
        }

您的代码中有一些错误。我已修复它们,请尝试以下代码:

    String s = strLine;
    List<String> myList = Arrays.asList(s.split(" "));
    List<Integer> intList = new ArrayList<>();
        for (int i=0;i<myList.size();i++) {
            //Check if all the values are integers
            try {

               /*Problem area----->*/ intList.add(Integer.parseInt( (String) myList.get(i)));

            } catch (Exception e) {
                throw new FormatException();
            }
        }

1您尚未创建arraylist myList,请先创建它

2您使用的列表类似于使用索引的数组,但它有add方法,所以请使用它

3 Java中没有名为formatException的异常,在您的情况下,请使用NumberFormatException

下面是经过上述修改的正确程序

String s = "12 23 34";
        List<String> myList = new ArrayList<String>(Arrays.asList(s.split(" ")));
        List<Integer> intList = new ArrayList<>();
            for (int i=0;i<myList.size();i++) {
                //Check if all the values are integers
                try {

                   /*Problem area----->*/ 
                    intList.add( Integer.parseInt( (String) myList.get(i) ));

                } catch (Exception e) {
                    throw new NumberFormatException ();
                }
            }

intList是和ArrayList,您无法通过[]访问它。这是一个数组运算符。相反,要设置为索引,请尝试

intList.add(i, Integer.parseInt( (String) myList.get(i) ));

你确定你传递的是一个完全有效的列表吗?如果我没有错的话,列表应该是-->['15','16',…]格式异常是一个自定义的异常。但是谢谢你剩下的:是否有用实际上我还有一个问题,Try函数是否真的添加了它,或者我应该在Try函数之外重新键入它,你能解释一下吗,我不明白try实际添加了什么以及您想要在tryWell之外重新键入什么try/catch的主要原因是如果列表中有一个非整数值,则选择pick示例:['15','16',ERROR',25','35']。所以,如果我使用try,它成功了,它会编辑新列表吗?还是我应该在外部这样做,让它编辑列表?它是这样工作的…如果try没有异常,意味着所有的值都是列表中的整数,那么它会继续添加新列表和解析的int值,因此,不需要在外部执行任何操作。如果try在添加时由于非整数而出现异常,那么它不会将该元素添加到新列表中,它直接跳转到catch,这就是我们想要的,并且它在每次迭代中重复相同的操作,因为我们有一个cathc块来处理异常。所以不需要编辑任何外部内容。还有其他问题吗?首先,没有使用new创建的intList,这是第一个问题。那么只有你的答案才能被认为只是一个代码片段。我可能不完整。intList的类型为List intList;所以无论如何,它应该是一个列表。因此,通过[]访问将不起作用。同意您的说法,通过[]访问将不起作用。但是如果你的答案不完整,就把它作为评论。。。
intList.add(i, Integer.parseInt( (String) myList.get(i) ));