处理字符串的StringIndexOutOfBoundsException

Jon*_*ham 4 java

try {
    string = scan.nextLine().charAt(0);
} catch(StringIndexOutOfBoundsException siobe){
    System.out.println("invalid input");
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此代码来处理从文本文件中获取的字符串的异常。但是我得到一个错误,说尝试将实际的字符串声明更改为字符。我不确定该如何处理?

Era*_*ran 6

但是我得到一个错误,说尝试将实际的字符串声明更改为字符。

scan.nextLine().charAt(0)是一个charif,如果stringString(您得到的编译错误暗示),则不能为其分配char。

如果仅需要输入行的第一个字符,则应将其存储在char变量中。

char first;
try {
    first = scan.nextLine().charAt(0);
} catch(StringIndexOutOfBoundsException siobe){
    System.out.println("invalid input");
}
Run Code Online (Sandbox Code Playgroud)

当然,如果在获取第一个字符之前测试String的长度,则可以避免捕获此异常:

char first;
String line = scan.nextLine();
if (line.length() > 0)
    first = line.charAt(0);
else
    System.out.println("invalid input");
Run Code Online (Sandbox Code Playgroud)

  • 这应该是一条评论。它实际上并没有回答这个问题-假设OP正在获取StringIndexOutOfBoundsException,大概(string)已经(bizarrely)是一个char。 (4认同)