“线程中的异常”;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:10

“线程中的异常”;“主要”;java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:10,java,string,Java,String,正在尝试获取正好10个字符长的消息。当信息短于10个字符时,有人能给我指出正确的方向吗 以下是我目前的代码: System.out.println("Word:"); String word = scan.nextLine(); String shortword = word.substring(0, 10); String shortworduppercase = shortword.toUpperCase(); System.out.println(shortworduppercas

正在尝试获取正好10个字符长的消息。当信息短于10个字符时,有人能给我指出正确的方向吗

以下是我目前的代码:

System.out.println("Word:");
String word = scan.nextLine();

String shortword = word.substring(0, 10);   
String shortworduppercase = shortword.toUpperCase();
System.out.println(shortworduppercase); 

我知道这和帕德赖特有关,但我似乎什么都做不到

如果您询问如何获得填充和/或截断为正好10个字符的字符串,那么有很多方法可以做到这一点。例如,这里有一个在不依赖任何(显式)条件逻辑的情况下处理所有非空情况的方法:

String getTenChars(String input) {
    return new StringBuilder(input).append("          ").subString(0, 10);
}

如果字符串的长度比试图作为子字符串的结束索引短,则会得到
java.lang.StringIndexOutOfBoundsException

在这种情况下,您需要在子字符串之前检查字符串的长度

int maxLength = 10;
String shortWord;
if (word.length() <= maxLength){
    shortWord = word;
} else {
    shortWord = word.substring(0,maxLength);
}
System.out.println(shortWord);

你能解释一下你想完成什么吗?这取决于你想如何填写。那么,你能从标题中删除第一个单词(steg…aphy)吗?虽然您可能正在这样一个项目的上下文中编写代码,但这个问题和代码与此没有直接关系,因此在标题中使用该术语只会使该术语的搜索变得杂乱无章。尝试找出方法,以便在输入少于10个字符的词时,程序会自动填充10中缺少的字符。因此,如果您输入一个5个字母的单词,程序将再输入5个字母,使其成为10个。感谢标题编辑。“程序再输入5”是指程序附加了一些常量(如@JohnBollinger的答案中的空格),还是程序提示用户进行更多输入?
int maxLength = 10;
StringBuilder shortWord;
if (word.length() <= maxLength) {
    shortWord = new StringBuilder(word);
    shortWord.setLength(10);
} else {
    shortWord = new StringBuilder(word.substring(0, maxLength));
}