我正在尝试在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”进行比较,但程序不能将两个字符串都识别为等于?
我将不胜感激任何澄清和建议。
谢谢!
答案 0 :(得分:0)
Qn1:这是检索输入的另一种方法,希望它能解决问题:
public static int printMenu(){
...
intInput = input.nextInt();
input.nextLine();
return intInput;
}
Qn2: ==
比较器不用于字符串。试试这个:
if(dataEntered.equalsIgnoreCase("quit")) {
...
}