2015-10-16 79 views
1

我想創建一個菜單程序,使用不同的選項:變動誤差在菜單程序

1)Enter Name 
2)Display Name 
3)Change Name 
4)Quit 

但由於某些原因,我不能讓用於存儲在第一季度的名義變量,要在使用Q2!

下面的代碼:(如果2出現的錯誤,與可變FULL_NAME被紅色下劃線和不工作)

package Testing; 
import java.util.Scanner ; 
public class Menu { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner in = new Scanner(System.in); 
    // print menu 
    for (int i = 1; i <= 5; i++) 
      System.out.println(i + ". Menu item #" + i); 
    System.out.println("0. Quit"); 
    // handle user commands 
    boolean quit = false; 
    int menuItem; 
    do { 
      System.out.print("Choose menu item: "); 
      menuItem = in.nextInt(); 
      switch (menuItem) { 
      case 1: 
       System.out.println("You've chosen item #1"); 
       { 
        Scanner user_input = new Scanner(System.in); 

        String first_name; 
        System.out.print("Enter your first name: "); 
        first_name = user_input.next(); 

        String family_name; 
        System.out.print("Enter your family name: "); 
        family_name = user_input.next(); 

        String full_name; 
        full_name = first_name + " " + family_name; 

        System.out.println("You are " + full_name); 
       } 

       break; 
      case 2: 
       System.out.println("You've chosen item #2"); 
       System.out.println("You are " + full_name); 
       break; 
      case 3: 
       System.out.println("You've chosen item #3"); 
       // do something... 
       break; 
      case 4: 
       System.out.println("You've chosen item #4"); 
       // do something... 
       break; 
      case 5: 
       System.out.println("You've chosen item #5"); 
       // do something... 
       break; 
      case 0: 
       quit = true; 
       break; 
      default: 
       System.out.println("Invalid choice."); 
      } 
    } while (!quit); 
    System.out.println("Bye-bye!"); 
} 
} 
+1

變量未在'case2'可以看到的範圍內聲明。將變量聲明移到'do'之外。 – RealSkeptic

+0

你應該在你的循環之外聲明你的變量。 –

回答

0
import java.util.Scanner ; 
public class Menu { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner in = new Scanner(System.in); 
    // print menu 
    for (int i = 1; i <= 5; i++) 
      System.out.println(i + ". Menu item #" + i); 
    System.out.println("0. Quit"); 
    // handle user commands 
    //The name 
    String first_name = ""; 
    String family_name = ""; 
    String full_name = ""; 
    while(true) { 
      System.out.print("Choose menu item: "); 
      int menuItem = 0; 
      try { // If you enter a string it will throw an exception! 
       menuItem = in.nextInt(); 
      } catch(Exception e) { 
       System.out.println(e.getMessage()); 
      } 
      switch (menuItem) { 
      case 1: 
       System.out.println("You've chosen item #1"); 
       System.out.print("Enter your first name: "); 
       first_name = in.next(); 

       System.out.print("Enter your family name: "); 
       family_name = in.next(); 

       full_name = first_name + " " + family_name; 
       System.out.println("You are " + full_name); 
       break; 
      case 2: 
       System.out.println("You've chosen item #2"); 
       System.out.println("You are " + full_name); 
       break; 
      case 3: 
       System.out.println("You've chosen item #3"); 
       // do something... 
       break; 
      case 4: 
       System.out.println("You've chosen item #4"); 
       // do something... 
       break; 
      case 5: 
       System.out.println("You've chosen item #5"); 
       // do something... 
       break; 
      case 0: 
       System.out.println("bye-bye"); 
       System.exit(0); // Exit 
       break; 
      default: 
       System.out.println("Invalid choice."); 
      } 
     } 
    } 
} 
1

你應該把full_name外循環,因爲目前它在局部範圍內,其無法從其他案例陳述中獲得。