Java中的错误

Java中的错误,java,debugging,project,Java,Debugging,Project,因此,目前我正在尝试做一个java项目,并在其他网站上看到了一些答案,但我很难理解它们。我需要这样做: 编写一个程序,提示用户输入一串单词,然后计数并显示字母表中每个字母在字符串中出现的次数。不必区分大写字母和小写字母。输出的格式应如下所示: 字母A计数=xx 字母B计数=xx 字母Z计数=xx“ 这就是我到目前为止所做的: import java.util.Scanner; public class Unit9 { public static void main(Stri

因此,目前我正在尝试做一个java项目,并在其他网站上看到了一些答案,但我很难理解它们。我需要这样做:

编写一个程序,提示用户输入一串单词,然后计数并显示字母表中每个字母在字符串中出现的次数。不必区分大写字母和小写字母。输出的格式应如下所示:

字母A计数=xx 字母B计数=xx

字母Z计数=xx“

这就是我到目前为止所做的:

import java.util.Scanner;


public class Unit9 {




    public static void main(String [] args ) 
    { 
    int array[] = new int[26]; 
    for (int i = 0; i < array.length; i++) 
    { 
    array[i] = 0; 
    } 
    Scanner Keyboard = new Scanner(System.in); 
    String userInput; 
    System.out.println("Please enter a string."); 
    userInput = Keyboard.next().toLowerCase(); 
    for (int i = 0; i < userInput.length(); i++) 
    { 
        char ch = userInput.charAt(i); 
        if (ch >= 'a' && ch <= 'z') { 
        array[ch - 'a'] ++; 
        } 
    } 
    for (char ch='a'; ch<='z'; ++ch) { 
        System.out.print(ch + array[ch-'a']);

        } 
    } 







}
发生了什么事?我做错了什么


编辑:事实上,我刚刚意识到另外一件事。。。当用户输入中有空格时,它停止检测,这意味着它只检测第一个单词。如何为空格添加检测?

您正在这一行的
字符和
int
之间使用
+
运算符:

System.out.print(ch + array[ch-'a']);
这将为您提供一个数字作为结果,然后将其输入到
System.out.print
int
作为输入,从而打印数字本身。您也没有空格(或使用
println
),因此它似乎是一行长的数字

在最后一个循环中尝试以下操作:

for (char ch='a'; ch<='z'; ++ch) { 
    System.out.print(ch + ": "+ array[ch-'a']+" ");
}

对于(char ch='a';ch它只检测到第一个单词的原因是因为您输入了:

userInput=Keyboard.next().toLowerCase()

而不是

userInput=Keyboard.nextLine().toLowerCase()


nextLine()读取输入的整行,而next()只读取第一个单词。

您想用它做什么:
array[ch-'a']++
?这正是我所需要的。非常感谢您,先生。事实上,我刚刚意识到……当用户输入中有空格时,它会停止检测,这意味着它只检测第一个单词。我如何为空格添加检测功能?
Scanner
是一个标记器。您必须更改它使用的分隔符,或者r改用其他类型的阅读器,如
BufferedReader
。我还是java初学者-我如何从扫描仪改为BufferedReader?它能做同样的样式输入吗?还是我需要用扫描仪输入并将其转换为BufferedReader?不幸的是,这已不再是您最初遇到的问题了你应该把这个问题作为一个单独的问题来问。首先,我会研究它是如何工作的,并尝试几次,看看你是否在某个特定的问题上卡住了。是的,谢谢你-我忘了关闭这个案例,因为我从Ondkloss朝着正确的方向轻轻推了一下就解决了它-我在重写它时也注意到了这一点
for (char ch='a'; ch<='z'; ++ch) { 
    System.out.print(ch + ": "+ array[ch-'a']+" ");
}