带循环的子串

时间:2012-12-10 07:58:11

标签: java

我想从文件中读取文字。每行应拆分为180个字符,然后每行应添加到表中,但我收到错误消息“String index out of range -180”。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadAndWrite {

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

         BufferedReader read = new BufferedReader (new FileReader("xyz.txt"));

         String line = read.readLine();
         int len = line.length();

         System.out.println(len);

         int chaCount = 0;
         while (chaCount < len) {
             String line2 = line.substring(chaCount, 180);
             System.out.println(line2);
             chaCount += 180;
         }
    }
}

3 个答案:

答案 0 :(得分:0)

您的Substring将像这样工作,

first loop: 
Substring(0,180);
second loop;
Substring(180,180);
//Error incoming
third loop
Substring(360,180);

你需要增加你的结尾,否则你会再次发现错误,因为Startindex必须低于或等于子串的结束指数

答案 1 :(得分:0)

试试这个:

line2 = line.substring(chaCount, 180<len-chaCount? 180:len-chaCount);

您尝试从line字符串中获取180个字符,在某些时候字符数将少于180个字符。

答案 2 :(得分:0)

你有

的问题

line2 = line.substring(chaCount,180);

 System.out.println(line2);

 chaCount = chaCount +180; 

第一次,系统将输出从0到180.但是下次你用它添加180并且输出为空。但是当它第三次尝试发生错误时。所以不要添加chaCount或使用另一个变量来保持该值。