2012-10-13 2 views
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(); 
    } 
+0

어떻게됩니까? 오류가 있습니까? 스택 트레이스? 어떻게 그걸 먹은거야? –

+0

JCreator LE로 컴파일 중입니다. "-------------------- 구성 : music - JDK 버전 1.7.0_07 - ------ -------------- 오류 : 메인 클래스 음악을 찾거나로드 할 수 없습니다. 처리 완료 " – user1743771

+0

"public static void main (String [] args) { 여전히 메인 클래스 음악을로드하지 않을 것입니다. – user1743771

답변

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

+0

좋아, 내가 마지막 int에 넣어 빌드 할 수 있지만 "기호를 찾을 수 없습니다"라는 오류가 발생했습니다. 위치 줄 10 – user1743771

+0

컴파일하고 테스트했습니다. 올바르게 복사 했습니까? 상단에 정적 가져 오기를 복사 했습니까? – btiernay

+0

나는 라인을 놓쳤다. 도와 줘서 고마워! – user1743771

4
public static void music(String[] args) 

이 주요 방법처럼 보이지 않는다. 당신은 music 대신에 main을 사용해야합니다 - 또한

public static void main(String[] args) 

는,이 클래스를 포함하는 compilation 단위는 클래스와 동일한 이름을 가져야한다. 그리고 클래스 이름을 다음과 같이 사용하십시오 : MusicMusic.java

3

귀하의 방법은 main이어야합니다. this tutorial을 검토하십시오.

대신 :

public static void music(String[] args) { 

시도 :

public static void main(String[] args) { 

public static void music(String[] args)는 클래스와 같은 이름을 가진 정적 메서드를 정의합니다. 코드가

3

괜찮아 보입니다 만 당신은 main() 방법 서명이 public static void main(String[] args)을해야 main 메소드 이름을 바꿀 수 없습니다 당신의 코드가

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

주 같아야-주요 방법 서명이 일정하고 찾을 아래 의미.

공개 - 모두가 액세스 할 수 있습니다.

정적 - Java 환경은 클래스의 인스턴스를 만들지 않고이 메서드를 호출 할 수 있어야하므로이 메서드는 정적으로 선언되어야합니다.

void - 반환 값이 없으므로 반환 값이 없습니다.

주() - 방법의 이름, 주요 방법이기 때문에 기본.

문자열 args [] -이 메소드에 대한 인수. 이 메소드에는 String 배열이 주어져야하며, 배열은 'args'라고 불린다.

+0

'public class Music'이란 뜻인가요? – DNA

+0

가 코드를 업데이트했습니다. –

1

함수 이름 main() 음악이 아니라()

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

문제가 '첫 번째 줄'인 경우 완전한 코드를 게시 할 이유가 없습니다. –