首页 > 解决方案 > 尝试划界和分割线时出界

问题描述

我必须将文件读入数组列表,然后从 arrlist 中逐行读取,以便分隔命令(i 表示插入)和键(要插入的数字)。因为我正在建立一个跳过列表。我的文件由以下部分组成:

我2173

我2307

我2405

我1512

我1783

我 60

编辑:&是的,每个插入命令旁边都有一个数字。

问题是我的程序突然超出以下行的范围:

int key = Integer.parseInt(字母[1]);

为什么会发生这种情况?它之前成功运行,但突然超出范围,当我进行打印测试时,它也在文件行之间跳过了 1 行。代码如下。谢谢你。

错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 1 超出 SkipList.main 处长度 1 的范围(SkipList.java:103)

import java.io.*;
import java.util.*;
import java.lang.StringBuild

public class SkipList{
    
 public static void main(String[] args) throws IOException{
      
     String line; 
     
     File file = new File("src/in10.txt");
    
     Scanner in = new Scanner(file);  
  
    //Copying File content 
     ArrayList<String> arrList = new ArrayList<>(); 
                   
    // Populates array list with text file content        
    while(in.hasNextLine()) {
     arrList.add(in.nextLine());
     }
     
     for ( int i = 0; i < arrList.size(); i++){
    
      line = arrList.get(i); 
    // System.out.println(line); 

    //Splits Line with space delimiter into String Array
    String[] letter = line.split(" ");
    
    String command = letter[0];
    int key = Integer.parseInt(letter[1]); //ERROR occurs here?
        
    }
  
  } 
                                                                                                    
}

标签: javadelimiter

解决方案


// System.out.println(line); 

//Splits Line with space delimiter into String Array
String[] letter = line.split(" ");

你得到了一些基本的建议:

  1. 显示行
  2. 显示数组长度

所以代码应该是这样的:

System.out.println("(" + line ")"); 

//Splits Line with space delimiter into String Array
String[] letter = line.split(" ");
System.out.println(letter.length);

第一个 println() 将告诉您文件中是否有空行。

第二个 println() 将告诉您拆分是如何工作的。正如建议的那样,您可能在字符串中没有“”,而是一个不可打印的字符。

我们无法为您调试代码,因为我们无权访问您的文本文件。


推荐阅读