切换声明调查

时间:2012-10-13 19:58:52

标签: java

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

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

5 个答案:

答案 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