当前位置: 代码迷 >> java >> 根据特定的用户输入重复到主菜单
  详细解决方案

根据特定的用户输入重复到主菜单

热度:58   发布时间:2023-08-02 10:36:55.0

我试图在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。

当我输入quit时,程序不会输出“ OK”,而是输出ERROR。 我不明白为什么会发生这种情况,因为我正在将输入(这是一个字符串)与字符串“ quit”进行比较,但是以某种方式,程序无法将两个字符串都视为相等?

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

谢谢!

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

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

Qn2: ==比较器不用于字符串。 尝试以下方法:

if(dataEntered.equalsIgnoreCase("quit")) {
    ...
}
  相关解决方案