java - 线程 "main"中出现异常错误,我需要输入一条消息

标签 java

我没有看到问题或如何输入消息。我不断收到的完整错误如下。我看不出代码有任何问题,也找不到将消息写入代码的方法。

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/

相关文章:

java - JBoss 的单独登录配置?

java - 尝试在 Android 中获取所有 SMS 消息时出现 NullPointerException

java - Spring MVC 强制 Jackson 只使用 setter

java - 使用java流将两个集合的元素与分隔符连接起来

java - Weka 预测分布中类值的顺序错误

java - 在android中如何访问从Api返回的Gson对象而不返回空指针异常?

java - 如何用Java或JSP实现Jaccard索引?

java - 复制文件而不创建 FileOutputStream

java - 面包屑实现

java - 如何在 Eclipse 插件中使用 AspectJ