为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印一条错误消息,指出用户输入索引太大?

如何打印一条错误消息,指出用户输入索引太大?

拉莫斯之舞 2021-09-26 14:34:49
我正在尝试编写一个程序,当用户输入一个单词时,然后输入一个索引,这会导致程序在给定的索引处显示字符,或者给出错误告诉用户给定的索引太大。每当我运行代码并放置一个太大的索引时,我都会收到来自 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");   

}

该异常是由于试图在过大的索引处获取字符而引起的。所以你应该在确保索引不是太大之后尝试获取字符,对吗?


查看完整回答
反对 回复 2021-09-26
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

这是 try-catch 块的完美使用。尝试访问索引,如果出现错误并从那里打印,则捕获产生的异常:


char inputIndex;

try {

    inputIndex = word.charAt(index);

} catch(IndexOutOfBoundsException e) {

    System.out.println("Out of bounds!");

}


查看完整回答
反对 回复 2021-09-26
  • 3 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信