Java程序编译错误

Java程序编译错误,java,Java,我不知道我做错了什么,但编译器一直在说: java:3:错误:类问题是公共的,应在名为problem.java public class problem的文件中声明 代码如下: import java.util.Scanner; public class problem { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println

我不知道我做错了什么,但编译器一直在说:

java:3:错误:类问题是公共的,应在名为problem.java public class problem的文件中声明

代码如下:

import java.util.Scanner;

public class problem {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a string");
    String s = input.nextLine();

    String lower = "";
    String total = "";

    for (int i = 0; i < s.length(); i++) {
        char thisChar = s.charAt(i);

        if (thisChar >= 97 && thisChar <= 122) {
            lower += thisChar;
        }
    }

    System.out.println("Total amount of characters: " + s.length() + " - " + s);
    System.out.println("Lower case letters: " + lower.length() + " - " + lower);
    }
}
import java.util.Scanner;
公共阶级问题{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入字符串”);
字符串s=input.nextLine();
字符串下限=”;
字符串总数=”;
对于(int i=0;i如果(thisChar>=97&&thisChar您的文件名为
StringLength.java
但您的类在第3行中命名为
prob。类名应与文件名相同,不带.java扩展名,即
StringLength

您的文件名为
StringLength.java
,但您的类名为
problem
在第3行。类名应与文件名同名,不带.java扩展名,即
StringLength

char thisChar = s.charAt(i);
charAt()返回指定索引处的字符 但你正在检查 如果(thisChar>=97&&thisChar=97&&thisacii charAt()返回指定索引处的字符 但你正在检查
如果(thisChar>=97&&thisChar=97&&thisacii当您像
java StringLength
这样键入时,jvm将尝试在该类中查找main方法,并且该类必须是公共的。在这种情况下,存在main方法的类名与命令中给出的类名不同。
您应该将文件名更改为
problem.java
,或者将类名更改为
StringLength

当您像
java StringLength
这样键入时,jvm将尝试在该类中查找main方法,并且该类必须是公共的。在这种情况下,存在main方法的类名和co中给出的类名mmand是不同的。
您可以将文件名更改为
problem.java
或将类名更改为
StringLength

谢谢这非常有帮助如果有答案对您有帮助,.无需发表感谢评论谢谢这非常有帮助如果有答案对您有帮助,.无需发表感谢评论
char thisChar = s.charAt(i);
int thisAscii = String.valueOf(thisChar).codePointAt(0);
if (thisAscii >= 97 && thisAscii <= 122) {

}