获取Java中的输入时,Java数组索引超出og界限异常

获取Java中的输入时,Java数组索引超出og界限异常,java,string,exception,input,Java,String,Exception,Input,在Java中获取字符串输入时,我得到了JavaArrayIndexOutOfBoundsException。请帮帮我。这是我的代码:我编辑了要拆分的代码,使用:它表示“线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:1 位于solution2.Solution.main(Solution.java:27) " 公共类解决方案{ public static void main(String[] args){ Scanner sca

在Java中获取字符串输入时,我得到了Java
ArrayIndexOutOfBoundsException
。请帮帮我。这是我的代码:我编辑了要拆分的代码,使用:它表示“线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:1 位于solution2.Solution.main(Solution.java:27) "

公共类解决方案{

public static void main(String[] args){

    Scanner scan = new Scanner(System.in);
    String str = scan.next();
    String strarr[] = str.split(",");
    String temp = strarr[0];
    String temparr[] = temp.split(".");
    String temp1 = strarr[1];
    String temparr1[] = temp.split(".");
    int x1 = Integer.parseInt(temparr[0]);
    int x2 = Integer.parseInt(temparr[1]);
    int y1 = Integer.parseInt(temparr1[0]);
    int y2 = Integer.parseInt(temparr1[1]);
    System.out.println(distance(x2,x1,y2,y1));

}

public static int distance(int x1,int y1,int x2,int y2){

    int xlen=x2-x1;
    int ylen=y2-y1;

    return (xlen+ylen)*10-(ylen*5);     

}

}

您需要对
字符串.split()中的点字符进行转义,否则任何字符都将匹配:

String temparr[] = temp.split("\\.");
对于
temparr1
,我想您是想使用
temp1

String temparr1[] = temp1.split("\\.");

如果您需要双值,可以使用Scanner.nextDouble()

您是否注意到将
temp.split()
分配给
temparr1
而不是
temp1.split()

而且,
split
接受正则表达式作为参数,并且当它发生时,regexp
几乎匹配任何东西。所以,你应该纠正这一点

我假设,由于没有任何东西反驳我的猜测,您正在解析格式为
1.2,3.4
的输入,其中1,2,3和4是任意数


除此之外,
Scanner.next
读取下一个标记,这意味着它将只读取“1.2,3.4”中的“1”。您必须使用
Scanner.nextLine

也许您应该在索引数组之前测试数组的
length()
(并且指出程序的哪一行出错是礼貌的。)不仅礼貌,而且必要,因为有很多机会引发上述异常。嗯,您的代码没有任何验证,请举例说明您要键入的内容。输入:1.2,2.4输出:整数值,如1,2,2,4。格式非常重要你能告诉我如何使用拆分吗?:“你能告诉我如何使用拆分吗?”“无需逃避
,只需使用
str.split(“:”)
更改问题的性质对希望以后阅读此文的人没有帮助。现在的答案与现有的问题不符。我会说把问题中的原始代码放回原处,然后发布一个新问题。:)谢谢你恢复原来的Q。
String temparr1[] = temp1.split("\\.");