我没有看到问题或如何输入消息。我不断收到的完整错误如下。我看不出代码有任何问题,也找不到将消息写入代码的方法。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of ran
ge: 30
at java.base/java.lang.StringLatin1.charAt (String.java:47)
at java.base/java.lang.String.charAt (String.java:693
at Main.main (Main.java:15)
import java.util.Scanner;
public class Main
{
public static void main( String[] args )
{
Scanner kb = new Scanner(System.in);
System.out.println("What is your message? ");
String message ="" + "\n";
System.out.println("\nYour message is " + " characters long.");
System.out.println("The first character is at position 0 and is '" + "'.");
int lastpos = 30;
System.out.println("The last character is at position " + lastpos + " and is '" + message.charAt(lastpos) + "'.");
System.out.println("\nHere are all the characters, one at a time:\n");
for ( int i=0; i<message.length(); i++ )
{
System.out.println("\t" + i + " - '" + message.charAt(i) + "'");
}
int a_count = 0;
for ( int i=0; i<message.length(); i++ )
{
char letter = message.charAt(i);
if ( letter == 'a' || letter == 'A' );
{
a_count++;
}
}
System.out.println("\nYour message contains the letter 'a' " + a_count + " times. Isn't that interesting?");
}
}
最佳答案
您实际上从未从扫描仪捕获消息 - 像这样:
message = kb.nextLine();
此外,如果您尝试获取消息的最后一个索引/位置,您需要执行以下操作:
int lastpos = message.length();
OR
int lastpos = message.length()-1;
两者之间的区别在于,第一个给出字符串的大小,第二个给出字符串的最后一个索引(例如,“abcdefg”,lastpos 1 将是 7,lastpos 2 将是6).
最后,请记住,您可以执行类似的操作
message.charAt(0);
获取字符串的第一个索引字符。
关于java - 线程 "main"中出现异常错误,我需要输入一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62137922/