2014-11-22 59 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個'Scanner's?另外,如果您的'main'方法應該是程序的入口點,則它的簽名是錯誤的。 – fabian 2014-11-22 09:25:24

+1

您需要查看java文檔:a)格式化/縮進,b)如何編寫和限定main()方法,c)如何使用Scanner類進行輸入(您不需要兩個)。 – ujvl 2014-11-22 09:26:39

回答

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中有一個主要方法的規範。你的主要方法應該是這樣

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臺掃描儀。 由於掃描儀使用迭代器工作,保持位置在給定輸入流內(在這種情況下),當您實例化2個掃描器時,它們都將它們的迭代器設置到流中的相同位置,然後使用「w.nextLine ();「,並且第一個掃描器通過第一條線返回第一條線,但是第二個掃描器仍然在流的開始位置,所以基本上當您使用n時。 nextInt();掃描程序嘗試將您的名稱解析爲int,奇怪的是它不會拋出InputMismatchException,因爲它應該這樣做(「https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28%29」)。 重做你的代碼@Sarthak米塔爾建議,它應該工作。

PS:記住縮進,這一點很重要,真的

0

第一:

void main() 

沒有在Java中沒有這樣的事情。它應該是,

要知道的publicstaticString[] args含義閱讀:Explanation of 'String args[]' and static in 'public static void main(String[] args)'

其次,

int client = n.nextInt(); 

client值取決於你的輸入。如果您輸入23而不是1,那麼您的代碼肯定會轉到else部分。所以請確保你的輸入是1

第三,

擺脫額外的掃描儀。你只需要一個。

其餘的代碼是可以的。