0

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

import java.util.Scanner;

公共类解决方案{

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);     

}

}

4

2 回答 2

0

您需要转义String.split()正则表达式中的点字符,否则将匹配任何字符:

String temparr[] = temp.split("\\.");

对于temparr1,我认为您打算使用temp1

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

如果您期望双值,则可以Scanner.nextDouble()改用。

于 2012-10-20T12:57:56.680 回答
0

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

此外,split将正则表达式作为参数,并且当它发生时,正则表达式.几乎匹配任何东西。所以,你应该纠正它。

我假设,由于缺乏任何反驳我的猜测,您正在解析格式的输入1.2,3.4,其中 1、2、3 和 4 是任意数字。

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

于 2012-10-20T12:58:29.333 回答