在特定用户输入时重复到主菜单

时间:2015-07-18 12:09:38

标签: java menu switch-statement controls

我正在尝试在java中创建一个简单的程序,用户可以在其中输入一些行然后保存它,然后从保存的文件中加载数据。

目前,我已经掌握了该程序的基本概要,但我被困在用户输入数据的第一阶段,然后希望返回主菜单进行其他选择。

代码:

import java.io.*;
import java.util.*;

public class Datafile{

    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\Kence\\workspace\\Java 8 - Beyond the Basics - Working Files\\Practice Programs\\src\\Practice Data Edited",true));
        String data = null;
        String dataEntered = null;
        int menuChoice = printMenu();
        switch(menuChoice){
            case 1: 
                System.out.println("Please enter a line of data");
                dataEntered = input.nextLine();
                if(Integer.parseInt(dataEntered) == 0){
                    System.out.println("OK");
                    //printMenu(); <--- Qn 1. Where i am stuck
                    return;
                }else{
                    System.out.println(dataEntered);
                }
                //Why this does not recognize "quit" when entered
                /*if(dataEntered == "quit"){   <--- Qn2. Where i am stuck
                    System.out.println("OK");
                }else{
                    System.out.println("Error");
                }*/
                data += dataEntered;
                System.out.println("Data entered.Please enter the next line of data or press quit to exit back to the main menu.");

                break;

            case 2:
                System.out.println("2 Entered");
                break;
            case 3:
                System.out.println("3 Entered");
                break;
            case 4:
                System.out.println("4 Entered");
                break;
        }

        input.close();
    }



    public static void printStars(){
        for(int i = 0; i<66 ; i++){
            System.out.print("*");
        }
        System.out.println();
    }

    public static int printMenu(){

        printStars();
        System.out.println("System Started");
        printStars();
        System.out.println("Enter 1 to input a new line of data");
        System.out.println("Enter 2 to list all data");
        System.out.println("Enter 3 to save existing data");
        System.out.println("Enter 4 to load data");
        printStars();
        return Integer.parseInt(input.nextLine());
    }

}

QN 1 在上面的代码示例中,当用户输入0时,i可以运行printMenu(),但之后无法采取任何进一步的操作。我希望能够在用户输入0后选择2,3或4选项。

编辑:printMenu在初始启动时工作正常,在我输入1后输入数据,然后按0,新的printMenu()不起作用,因为我实际上没有用switch语句测试输入。我无法找到一种方法来在此时再次运行printMenu()而不嵌套另一个switch语句,之后再使用另一个switch语句等等。

QN2。

当我进入退出时,程序不输出“OK”,而是输出ERROR。我不明白为什么会发生这种情况,因为我将输入(字符串)与字符串“quit”进行比较,但程序不能将两个字符串都识别为等于?

我将不胜感激任何澄清和建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

Qn1:这是检索输入的另一种方法,希望它能解决问题:

public static int printMenu(){
    ...
    intInput = input.nextInt();
    input.nextLine();
    return intInput;
}

Qn2: ==比较器不用于字符串。试试这个:

if(dataEntered.equalsIgnoreCase("quit")) {
    ...
}