gpt4 book ai didi

java - 收到 StringIndexOutOfBoundsException 但无法找到源

转载 作者:行者123 更新时间:2023-12-02 04:54:41 26 4
gpt4 key购买 nike

我的任务:使用scanner方法从一行数据中提取字符串、 float 和整数。

数据格式为:

Random String, 240.5 51603
Another String, 41.6 59087

等等

我的源代码片段:

    import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class readTest {

public static void main(String args[]) throws FileNotFoundException
{

System.out.println ("Enter file name");

Scanner scanInput = new Scanner(System.in); //Scanner for reading keyboard input for file name
String fileName = scanInput.nextLine(); //Defines file name as a string from keyboard
File inputTxt = new File(fileName); //Declares the file based on the entered string
Scanner in = new Scanner(inputTxt);

do {

int a; //variable to count how many characters in name
String baseStringA = in.nextLine(); //read whole line as string
a = baseStringA.indexOf(","); //defines a as the posistion of the comma
String reduceStringA = baseStringA.substring(0, a); //reduces string to everything before comma

Scanner scanA = new Scanner(baseStringA).useDelimiter("[^.0-9]+"); //removes letters and comma from string
Float numberA = scanA.nextFloat();
int integerA = scanA.nextInt();

System.out.print (reduceStringA + numberA + integerA);

} while (in.hasNextLine());
}
}

因此,在研究了几个不同的主题后,我终于成功地吐出了这段代码(我对任何类型的编码都很陌生),我非常兴奋,因为我设法获得了我想要的输出。但是,在尝试实现一个循环以使该过程对所有可用行重复之后,我经常在程序打印第一行的输出后遇到错误 java.lang.StringIndexOutOfBoundsException。

完整错误:

String index out of range: -1
at java.lang.String.substring(Unknown Source)
at readTest.main(readTest.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

我尝试进行了一些研究,我确信它来 self 的产品线

String reduceStringA = baseStringA.substring(0, a);

当我尝试读取错误给出的实际信息时,这似乎更明显,但是当我尝试跟踪程序出现问题的位置时,我却发现了空。

有人能发现我的菜鸟错误吗?或者我只是完全错误地执行了这个过程?

输入txt:

Stringy String, 77.2  36229 
More Much String, 89.4 24812
Jolly Good String, 182.3 104570

这是我收到错误的一个例子

当输入

Random String, 240.5 51603
Another String, 41.6 59087
String String, 182.6 104570

按预期工作

这对我来说真的很奇怪。

最佳答案

        int a; //variable to count how many characters in farm name
String baseStringA = in.nextLine(); //read whole line as string
a = baseStringA.indexOf(","); //defines a as the posistion of the comma
String reduceStringA = baseStringA.substring(0, a);

如果baseStringA中没有逗号baseStringA.indexOf()will return -1 。因此,您将尝试获取子字符串 (0,-1),从而导致错误。

最后,错误来自这里 baseStringA.substring(0, a); 因为开始索引 0 之一大于结束索引 a(即 -1) - 更多 here

关于java - 收到 StringIndexOutOfBoundsException 但无法找到源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com