问题描述
我试图在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”进行比较,但是以某种方式,程序无法将两个字符串都视为相等?
如有任何澄清和建议,我将不胜感激。
谢谢!
1楼
Qn1:这是检索输入的另一种方法,希望它将解决问题:
public static int printMenu(){
...
intInput = input.nextInt();
input.nextLine();
return intInput;
}
Qn2: ==
比较器不用于字符串。
尝试以下方法:
if(dataEntered.equalsIgnoreCase("quit")) {
...
}