我不知道我做错了什么,但编译器一直在说:
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);
}
}
有人可以帮助我吗?
答案 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) {
}