我正在尝试编写一个程序,当用户输入一个单词时,然后输入一个索引,这会导致程序在给定的索引处显示字符,或者给出错误告诉用户给定的索引太大。每当我运行代码并放置一个太大的索引时,我都会收到来自 java 的错误消息。任何帮助表示赞赏!import java.util.Scanner;public class scratch { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.printf("Enter a word:"); String word = reader.next(); Scanner letter = new Scanner (System.in); System.out.printf("Enter an index:"); int index = letter.nextInt(); char inputIndex = word.charAt(index); int length = word.length(); if (index < length - 1 ) { System.out.printf("In word \"%s\", the letter at index" + " \"%2d\" is \'%c\'.\n" ,word, index, inputIndex ); } else { System.out.printf("too big"); } reader.close(); letter.close(); }}错误消息:线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:3 at java.base/java.lang.StringLatin1.charAt(Unknown Source) at java.base/java.lang.String.charAt (来源不明)在scratch.main(scratch.java:15)
3 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
您应该charAt在检查后致电:
if (index < length ) {
char inputIndex = word.charAt(index); // move this line here
System.out.printf("In word \"%s\", the letter at index"
+ " \"%2d\" is \'%c\'.\n"
,word, index, inputIndex );
} else {
System.out.printf("too big");
}
该异常是由于试图在过大的索引处获取字符而引起的。所以你应该在确保索引不是太大之后尝试获取字符,对吗?
梦里花落0921
TA贡献1772条经验 获得超6个赞
这是 try-catch 块的完美使用。尝试访问索引,如果出现错误并从那里打印,则捕获产生的异常:
char inputIndex;
try {
inputIndex = word.charAt(index);
} catch(IndexOutOfBoundsException e) {
System.out.println("Out of bounds!");
}
添加回答
举报
0/150
提交
取消