2014-11-22 2 views
-1

저는 초보 프로그래머이며 아버지를위한 프로그램을 찾고 있습니다.내 코드가 작동하지 않습니다.

import java.util.*; 
import java.lang.*; 
import java.io.*; 
class Employee 
{ 

    String m1,m2,m3,m4,m5,m6,m7; 
    void main() 
    { 
     Scanner w=new Scanner(System.in); 
     Scanner n=new Scanner(System.in); 
     System.out.println("Please enter your name "); 
     String name=w.nextLine(); 
     System.out.println("Please choose your client"); 
     System.out.println("1 - XXXXXX"); 
     int client=n.nextInt(); 
     m1=name;//Storing name 
     if(client==1)//If statement storing client 
     { 
       m2="XXXXXX"; 
    } 
    else 
    { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg=m1+"\t"+m2; 
    System.out.println(msg); 
} 

} 

그것은 문을 elsse 점프 "당신이 잘못된 선택 '을 입력 한대로"이 코드는 출력을 제공 할 것입니다. 오류가 무엇이며이 프로그램을 실행할 수있는 더 쉬운 방법이 있습니다. 감사합니다 요는 확인이 코드를 시도

+3

왜 2 개의 스캐너를 사용하고 있습니까? 또한'main' 메쏘드가 프로그램의 엔트리 포인트가되어야한다면, 그것은 틀린 서명입니다. – fabian

+1

당신은 a) 포맷팅/들여 쓰기, b)'main()'메소드 작성 및 한정 방법, c)'Scanner' 클래스로 입력을받는 방법 (당신은 두개). – ujvl

답변

1

나의 오류에 저에게 알려주십시오 수 : 당신은 당신의 주요 메소드 서명을 놓친

import java.util.Scanner; 

public class Try 
{ 

    static String m1,m2,m3,m4,m5,m6,m7; 
    public static void main(String[] args) 
    { 
     Scanner w=new Scanner(System.in); 

     System.out.println("Please enter your name "); 
     String name=w.nextLine(); 
     System.out.println("Please choose your client"); 
     System.out.println("1 - XXXXXX"); 
     int client=w.nextInt(); 
     m1=name;//Storing name 
     if(client==1)//If statement storing client 
     { 
       m2="XXXXXX"; 
    } 
    else 
    { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg=m1+"\t"+m2; 
    System.out.println(msg); 
} 

} 
1

. Java에는 main 메소드의 스펙이 있습니다. 귀하의 경우에는

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

당신이 주요 방법

public static void main(String args[]) { 
    String m1, m2, m3, m4, m5, m6, m7; 
    Scanner w = new Scanner(System.in); 
    Scanner n = new Scanner(System.in); 
    System.out.println("Please enter your name "); 
    String name = w.nextLine(); 
    System.out.println("Please choose your client"); 
    System.out.println("1 - XXXXXX"); 
    int client = n.nextInt(); 
    m1 = name;//Storing name 
    if (client == 1)//If statement storing client 
    { 
     m2 = "XXXXXX"; 
    } else { 
     System.out.println("You have entered a wrong choice"); 
     return; 
    } 

    String msg = m1 + "\t" + m2; 
    System.out.println(msg); 
} 
0

귀하의 문제가되어야 2 스캐너처럼 귀하의 주요 방법이 있어야한다. 스캐너는 주어진 입력 스트림 (이 경우) 안의 위치를 ​​유지하는 이터레이터를 사용하므로 두 스캐너를 인스턴스화 할 때 둘 다 같은 위치에있는 반복기를 스트림으로 설정 한 다음 "w.nextLine(); "그리고 첫 번째 스캐너는 원하는대로 첫 번째 라인을 반환하는 스트림으로 이동하지만 사용하지 않은 두 번째 스캐너는 여전히 스트림의 시작 부분에 있으므로 기본적으로 n을 사용할 때입니다. nextInt(); 스캐너가 사용자의 이름을 int로 구문 분석하려고 시도하고 InputMismatchException을 throw하지 않는 것이 이상합니다 ("https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28%29"). @Sarthak Mittal이 제안한 코드를 다시 작성하면 효과가 있습니다.

PS : 마음 들여 쓰기 유지, 정말

0

첫째, 중요 :

void main() 

은 자바 같은 건 없다. 그것은

public static void main(String[] args) 

이 글을 읽을 public, static, String[] args의 의미를 알려면,해야한다 : Explanation of 'String args[]' and static in 'public static void main(String[] args)' 둘째

,

int client = n.nextInt(); 

client 내부의 값은 사용자의 입력에 따라 달라집니다. 1 대신 2 또는 3을 입력하면 코드가 else 부분으로 이동합니다. 입력 내용이 1인지 확인하십시오.

세 번째로

여분의 스캐너를 제거하십시오. 하나만 있으면됩니다.

나머지 코드는 괜찮습니다.

관련 문제