package com.bt12;
import java.io.*;
public class Bt12_2 {
private static final String BLANKS=" ";
public static void main(String[] args) {
// TODO Auto-generated method stub
String inFile="D:\\BA\\Alice.txt";
int width=40;
System.out.println("Reading from:\t"+inFile);
System.out.println("Right justifying in a field of width:\t"+width);
FileReader fr;
try {
fr = new FileReader(inFile);
BufferedReader br=new BufferedReader(fr);
String line=null;
while((line=br.readLine())!=null){
int len=line.length();
System.out.println(space(width-len)+line);
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static String space(int n) {
// TODO Auto-generated method stub
return BLANKS.substring(0,n);
}
}
提示错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: 23
at java.lang.String.substring(Unknown Source)
at com.bt12.Bt12_2.space(Bt12_2.java:34)
at com.bt12.Bt12_2.main(Bt12_2.java:20)
Reading from: D:\BA\Alice.txt
Right justifying in a field of width: 40
这个程序主要是,右对齐一个文件对于一个给定的文件inFile,以及一个给定的整数n,程序打印相同的文本,但没行的有段位于第n列。请问我该怎么改呢?
请问我这个java程序那错了?我实在是不知道呀
答案:5 悬赏:20 手机版
解决时间 2021-03-20 09:44
- 提问者网友:焚苦与心
- 2021-03-20 04:42
最佳答案
- 五星知识达人网友:woshuo
- 2019-04-11 16:26
看出错的信息,应该是字符串下标越界,在space方法
全部回答
- 1楼网友:酒醒三更
- 2020-02-26 04:29
StringIndexOutOfBoundsException 下标越界了。你可以用debug模式测试一下,看看具体情况。
- 2楼网友:鸠书
- 2019-08-03 13:25
提示的异常显示:String下标越界。你的space函数有问题(注意其中的n的取值)。
- 3楼网友:不甚了了
- 2019-07-31 03:31
BLANKS 自始至终就是一个空格的字符串,你再程序中没有看到在哪里给它另外赋值,在space方法中,调用BLANKS.substring(0,n);截取字符串时,n的数值比BLANKS字符串的长度大,就会引发StringIndexOutOfBoundsException异常,n的数值只能小于等于BLANKS.length()
- 4楼网友:猎心人
- 2019-04-09 15:12
return BLANKS.substring(0,n);
这句话 的意思是 取 BLANKS的子串 。 BLANKS的值是 “ ”, 如果这个函数第二个参数如果大于了BLANKS的长度,就会报错,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯