【发布时间】:2016-02-09 03:09:13
【问题描述】:
目标:向用户询问点数。然后用户将输入"1 4",其中1 是x,4 是y。我将使用子字符串分别获取 1 和 4,然后将它们设为 int,这样我就可以将它们设为 Point。
我不断收到“java.lang.StringIndexOutOfBoundsException: String index out of range: -1”
这发生在第 25 行,而不是第 24 行。当我使用 3 而不是长度时,它也会给我这个错误。
这是一段代码:
public String run() {
String line = "";
String first = "";
String second = "";
int j = 0; int n = 0;
System.out.println("How many inputs do you want to enter?");
Scanner sc = new Scanner(System.in);
while(j == 0){
if(sc.hasNextInt()){
n = sc.nextInt();
Point[] points = new Point[n];
sc.close();
j++;
}
else {
System.out.println("invalid input");
}
}
Scanner scan = new Scanner(System.in);
for(int i = 0; i <= n; i++){
System.out.println("Enter x and y:");
line = scan.next();
first = line.substring(0,1);
second = line.substring(2,line.length());
}
scan.close();
origin(points);
return "";
}
【问题讨论】:
-
您不需要声明多个Scanner
-
不要
closeScannerSystem.in,那个 也关闭System.in -
您的
for loop条件也可能是一个问题。不应该是for(int i = 0; i < n; i++)吗?? -
运行此代码,我在扫描仪上得到
NoSuchElementException...可能是因为 System.in 已关闭
标签: java string io java.util.scanner