2

我在这个版本中遇到了一些问题。首先它不会加载主类。其次,我需要用户输入他们选择的音乐,然后我需要编译器来打印选择。有人可以帮我处理这段代码吗?请原谅我,但我对编程完全陌生。

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

5 回答 5

4
public static void music(String[] args)

这看起来不像主要方法。你应该使用main代替music: -

public static void main(String[] args)

此外,compilation包含此类的单元应与该类的名称相同。最好将您的班级名称用作: -Music并将其另存为Music.java

于 2012-10-13T20:00:44.093 回答
3

您的方法必须命名为main. 查看本教程

代替:

public static void music(String[] args) {

尝试:

public static void main(String[] args) {

public static void music(String[] args)定义了一个与类同名的静态方法。

于 2012-10-13T20:00:57.523 回答
3

你的代码看起来不错,但只有你不能重命名主方法,main()方法签名必须是public static void main(String[] args),你的代码应该像

public class Music{
    public static void main(String[] args) {
     ...
    }
}

注意-主要方法签名是恒定的,并在下面找到意义。

public - public 每个人都可以访问它。

static - Java 环境应该能够在不创建类实例的情况下调用此方法,因此此方法必须声明为静态。

void - 返回 void 所以没有返回值。

main( ) - 方法的名称,main 因为它是主要方法。

String args[] - 此方法的参数。必须给这个方法一个字符串数组,这个数组将被称为“args”。

于 2012-10-13T20:01:06.107 回答
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();
    }
}
}
于 2012-10-13T20:01:28.647 回答
1

解决方案

发布的源代码的问题是您没有类的入口点(即名为 的方法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

于 2012-10-13T20:07:08.593 回答