有人能帮我让缓冲读取器在Java中工作吗?

有人能帮我让缓冲读取器在Java中工作吗?,java,bufferedreader,Java,Bufferedreader,在这里,我试图阅读一份包含单词和相应缩写的文档。例如 one,1 two,2 easy,ez 每行用逗号隔开,单词用逗号与缩写分开 当我希望缓冲读取器使用 while ((line = br.readLine()) != null) 不会的。它将只读取第一行。这意味着它将显示1的缩写,即1。但是如果我输入另一个值,比如说2,我会得到这个错误消息 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Str

在这里,我试图阅读一份包含单词和相应缩写的文档。例如

one,1
two,2
easy,ez
每行用逗号隔开,单词用逗号与缩写分开


当我希望缓冲读取器使用

while ((line = br.readLine()) != null)
不会的。它将只读取第一行。这意味着它将显示1的缩写,即1。但是如果我输入另一个值,比如说2,我会得到这个错误消息

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
    at java.lang.String.charAt(String.java:658)
    at shortener.NewClass.Short(NewClass.java:41)
    at shortener.NewClass.main(NewClass.java:26)
Java Result: 

这是密码

public static String Short(String input) {

    try {
        FileReader fr = new FileReader("abbreviations.txt");
        BufferedReader br = new BufferedReader(fr);

        String line;
        while ((line = br.readLine()) != null) {

            for(int i = 0; i <= line.length(); i++) {
                if(line.charAt(i) == ','){
                    String strOrig = line.substring(0, i);
                    if(strOrig.equals(input)) {
                        String strAbv = line.substring(line.length()-1);
                        return strAbv;
                        }
                    }                
                }
            }   
        br.close();
        } catch (IOException e) {
        out.println("File Not found");
    }
    return null;
}
公共静态字符串短(字符串输入){
试一试{
FileReader fr=新的FileReader(“缩写词.txt”);
BufferedReader br=新的BufferedReader(fr);
弦线;
而((line=br.readLine())!=null){

对于(int i=0;i您在
for
循环中创建了条件表达式,因为i小于或等于line.length()。这是错误的。
i
不应等于该行的长度。请更改此设置

for(int i = 0; i <= line.length(); i++)
for(int i=0;i这是不正确的:

for(int i = 0; i <= line.length(); i++) {

查看代码的
循环部分:

for(int i = 0; i <= line.length(); i++) {
现在,它将循环抛出数字
0
1
2
3
。然而,行仅包含
0
1
2
。因此,如果我们要这样做:

for(int i = 0; i < line.length(); i++) {
//length of the line is 3, so:
for(int i = 0; i < 3; i++) {
for(int i=0;i

使用这个新代码,它将循环抛出
0
1
2
,我们的行长度相同,
0
1
2
2

+1,以建议使用
.split()
。请举例说明如何更好地使用它?
   // If the 'abbreviations.txt' file is not updated
   // by the program then arrange for it to be loaded once.
   //
   try (final FileInputStream is =
            new FileInputStream("abbreviations.txt"))
   {
       final Properties p = new Properties();
       p.load(is);
       return p.getProperty(input);
   }
for(int i = 0; i <= line.length(); i++) {
for(int i = 0; i < line.length(); i++) {
for(int i = 0; i <= line.length(); i++) {
//vs:
for(int i = 0; i < line.length(); i++) {
for(int i = 0; i <= line.length(); i++) {
//length of the line is 3, so:
for(int i = 0; i <= 3; i++) {
for(int i = 0; i < line.length(); i++) {
//length of the line is 3, so:
for(int i = 0; i < 3; i++) {