我在使用这个版本时遇到了一些问题。首先,不是所有它都不会加载主类。其次,我需要用户输入他们选择的音乐,然后我需要编译器来打印选择。有人可以帮我这个代码吗?请原谅,但我对编程完全不熟悉。
public class music {
public static void music(String[] args) {
System.out.println("What's your favorite kind music?: ");
System.out.println("1. Country");
System.out.println("2. Rock");
System.out.println("3. Heavy Metal");
System.out.println("4. Folk");
try{
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
int s = Integer.parseInt(bufferRead.readLine());
switch(s){
case 1:
System.out.println("Country");
break;
case 2:
System.out.println("Rock");
break;
case 3:
System.out.println("Heavy Metal");
break;
case 4:
System.out.println("Folk");
break;
default:
System.out.println("Country");
break;
}
}catch(IOException e){
e.printStackTrace();
}
答案 0 :(得分:4)
public static void music(String[] args)
这看起来不像主要方法。您应该使用main
代替music
: -
public static void main(String[] args)
此外,包含此类的compilation
单元应与该类的名称相同。最好将您的班级名称用作: - Music
并将其另存为Music.java
答案 1 :(得分:3)
您的方法必须命名为main
。查看this tutorial。
而不是:
public static void music(String[] args) {
尝试:
public static void main(String[] args) {
public static void music(String[] args)
定义了一个与类名相同的静态方法。
答案 2 :(得分:3)
您的代码看起来不错,但只有您无法重命名主要方法,main()
方法签名必须为public static void main(String[] args)
且您的代码应该像
public class Music{
public static void main(String[] args) {
...
}
}
注意 - 主要方法签名是常量,并在下面找到重要性。
公开 - 所有人都可以访问它。
static - Java环境应该能够在不创建类实例的情况下调用此方法,因此必须将此方法声明为static。
void - 返回void,因此没有返回值。
main() - 方法的名称,主要因为它是主要方法。
String args [] - 此方法的参数。必须为此方法提供一个字符串数组,该数组将被称为“args”。
答案 3 :(得分:1)
函数名称必须为main()
而不是music()
public class music {
public static void main(String[] args) {
System.out.println("What's your favorite kind music?: ");
System.out.println("1. Country");
System.out.println("2. Rock");
System.out.println("3. Heavy Metal");
System.out.println("4. Folk");
try{
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
int s = Integer.parseInt(bufferRead.readLine());
switch(s){
case 1:
System.out.println("Country");
break;
case 2:
System.out.println("Rock");
break;
case 3:
System.out.println("Heavy Metal");
break;
case 4:
System.out.println("Folk");
break;
default:
System.out.println("Country");
break;
}
}catch(IOException e){
e.printStackTrace();
}
}
}
答案 4 :(得分:1)
<强>解决方案强>
发布来源的问题是您的班级没有entry point(即名为main
的方法)。
<强>建议强>
既然你提到你也是编程新手,我已经冒昧地提出一些风格建议,让你的代码更简单易读(IMO):
import static java.lang.System.in;
import static java.lang.System.out;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
public class Music {
private static final String DEFAULT_MUSIC = "Country";
public static void main(String[] args) {
Map<Integer, String> musicOptions = new LinkedHashMap<Integer, String>();
musicOptions.put(1, DEFAULT_MUSIC);
musicOptions.put(2, "Rock");
musicOptions.put(3, "Heavy Metal");
musicOptions.put(4, "Folk");
out.println("What's your favorite kind music?: ");
for (Entry<Integer, String> option : musicOptions.entrySet()) {
Integer choice = option.getKey();
String music = option.getValue();
out.printf("%d. %s\n", choice, music);
}
final int choice = new Scanner(in).nextInt();
String music = musicOptions.get(choice);
if (music == null) {
music = DEFAULT_MUSIC;
}
out.println(music);
}
}
进一步阅读
http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt() http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html