Java程序编译错误

时间:2015-10-12 03:43:12

标签: java

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

  

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

这是代码:

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);
    }
}

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

当你键入java StringLength时,jvm将尝试在该类中找到main方法,并且该类必须是公共的。在这种情况下,存在main方法的类名和命令中给出的类名是不同的。 您应该将文件名更改为problem.java或将您的班级名称更改为StringLength

答案 2 :(得分:0)

char thisChar = s.charAt(i);

charAt()返回指定索引处的字符 但你正在检查     if(thisChar&gt; = 97&amp;&amp; thisChar&lt; = 122)

你在检查ascii值吗?如果是这样,请更正您的代码。示例如下。

char thisChar = s.charAt(i);
int thisAscii = String.valueOf(thisChar).codePointAt(0);
if (thisAscii >= 97 && thisAscii <= 122) {

}