首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Switch语句调查

Switch语句调查
EN

Stack Overflow用户
提问于 2012-10-14 03:58:52
回答 5查看 283关注 0票数 2

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

代码语言:javascript
运行
复制
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();
    }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-14 04:07:09

解决方案

所发布的源代码的问题在于您没有指向您的类的entry point (即名为main的方法)。

建议

既然你提到了你也是编程新手,我就大胆地提了一些风格上的建议,让你的代码更简单、更容易阅读(IMO):

代码语言:javascript
运行
复制
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

票数 1
EN

Stack Overflow用户

发布于 2012-10-14 04:00:44

代码语言:javascript
运行
复制
public static void music(String[] args)

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

代码语言:javascript
运行
复制
public static void main(String[] args)

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

票数 4
EN

Stack Overflow用户

发布于 2012-10-14 04:00:58

您的方法必须命名为main。查看this tutorial

而不是:

代码语言:javascript
运行
复制
public static void music(String[] args) {

尝试:

代码语言:javascript
运行
复制
public static void main(String[] args) {

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12876471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档