Java字符串索引超出文本文件输入的范围

Java字符串索引超出文本文件输入的范围,java,indexing,Java,Indexing,我尝试使用以下代码将字符串输入一分为二: public TypeValue(String line) { while (line.charAt(i) != ' ') { i++; System.out.println(i); } type = line.substring(0,i); value = line.substring(i); } 我的输入是一个如下所示的文本文件: 10 16 10 32 10 9024720 F 10

我尝试使用以下代码将字符串输入一分为二:

public TypeValue(String line) {
    while (line.charAt(i) != ' ') {
        i++;
        System.out.println(i);
    }
    type = line.substring(0,i);
    value = line.substring(i);
}
我的输入是一个如下所示的文本文件:

10 16
10 32
10 9024720
F 10
F 1
F 111111
F 100000
F 10110110100111001
但是,我总是得到一个java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:13。只有当我尝试从文本文件读取输入时,才会发生这种情况。当我使用终端一行一行地输入时,它工作得很好

我已经找了几个小时了,但我不知道是什么原因造成的。它也总是13,即使我从文本文件中删除除第一行以外的所有行。有人能帮我吗

编辑:谢谢大家的帮助。问题完全在于其他方面。我没有在主方法中将文件正确地放入扫描仪…

您忘记初始化I。试试这个:

public TypeValue(String line) {
    int i=0;
    while (line.charAt(i) != ' ') {
        i++;
        System.out.println(i);
    }
    type = line.substring(0,i);
    value = line.substring(i);
}
您只需使用返回字符串数组的,然后分别使用结果数组的索引0和1获取第一个或第二个值,如下所示:

String[] values = line.split(" ");
type = values[0];
value = values[1];
另一种方法是获取字符串中空格字符的索引


尝试将原始ascii值与字符进行比较, 如


line.charAti!=''当line.length确定时,这对某些行失败,谢谢。在几次尝试中,我重新设置了,但仍然不起作用。谢谢,这起作用了。但我的输出不再正确。当我使用终端“”时,似乎从文本文件读取的输入完全不同,这比32更容易理解。并且,charAt返回UTF-16代码单位char,而不是ASCII。
int index = line.indexOf(' ');
// From 0 to the index where we found the space
type = line.substring(0, index);
// Starts from index + 1 to skip the space
value = line.substring(index + 1);
public TypeValue(String line) {
    int i=0;
    //ascii value for space is 32
    while ((int)line.charAt(i) != 32) {
        i++;
        System.out.println(i);
    }
    type = line.substring(0,i);
    value = line.substring(i);
}