我想允许用户选择其中包含不同投票选项的文本文件,让程序读取文件,然后创建一个菜单,用户可以从中选择这些选项并将结果放在一个单独的文献。我有程序读取文本文件并显示输出中的选项,但我无法弄清楚如何使其成为人们可以选择的菜单。我知道它与数组有关但问题是该程序应该被设计成无论文本文件中的选项数量如何,菜单都会自动更改。
我编辑了代码,目前正在运行。我分配了一个名为choice的变量来存储用户答案并显示它以查看它是否正确存储用户选择而且似乎是。我现在的下一个问题是,这项任务的最终目标是允许用户按照他们的意愿进行多次投票,然后当用户表明他们完成了计票并显示用户所做的所有投票时。我知道我需要包含一个while循环来计算多次投票和退出选项。然而,我遇到麻烦的是如何存储所有用户选择并在最后显示它们,因为我此时只有一个变量称为“选择”。我更新的代码部分现在代替了以前的代码。我在NetBeans中获得的结果位于
之下1:共和党人 2:民主党 3:独立 你想投票给:3 2 选择= 2 建立成功(总时间:10秒)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.swing.JFileChooser;
// * To change this template, choose Tools | Templates
//* and open the template in the editor.
/**
*
* @author * / 公共课程SurveyMaker {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFileChooser chooser = new JFileChooser();
Scanner in = null;
List<String> myOptions = new ArrayList<String>();
if(chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
File selectedFile = chooser.getSelectedFile();
try{
in = new Scanner(selectedFile);
int lineNumber = 1;
final int MAX_LINES = 9;
while (in.hasNextLine() && lineNumber <= MAX_LINES)
{
String line = in.nextLine();
System.out.println(lineNumber + ": " + line);
myOptions.add(line);
lineNumber++;
}
System.out.println("Would you like to vote for: " + myOptions.size());
Scanner scanchoice = new Scanner(System.in);
int choice = scanchoice.nextInt();
System.out.println("choice = "+ choice);
if (in.hasNextLine())
{
System.out.println("...");
}
}
catch(FileNotFoundException ex)
{
System.out.println("There was an error with the file. Try again.");
System.exit(1);
}
catch(IOException ex)
{
System.out.println("There was an error with the file. Try again.");
System.exit(1);
}
}
else {
System.out.println("You didn't choose a file.");
System.exit(0);
}
}
}
答案 0 :(得分:1)
while (in.hasNextLine() && lineNumber <= MAX_LINES)
{
String line = in.nextLine();
System.out.println(lineNumber + ": " + line);
lineNumber++;
}
这是您需要添加逻辑的地方。您已经拥有了单独获取行的代码,现在您只需创建一个适用于其中每个行的系统。您实际上是将文件分解为1个线段。
如其他答案所述,ArrayList
对象可用于存储对象供以后使用。如果你想创建一个ArrayList并在其中存储字符串,你可以这样声明:
List<String> myOptions = new ArrayList<String>();
您现在可以在循环中使用myOptions
:
while (in.hasNextLine() && lineNumber <= MAX_LINES)
{
String line = in.nextLine();
System.out.println(lineNumber + ": " + line);
myOptions.add(line);
lineNumber++;
}
现在,每当用户进行选择时,行号对应于数组索引+ 1.因此,如果他们想要选择选项2,则可以使用myOptions.get(1)
。或者更一般地myOptions.get(selection - 1)
只需确保验证用户的选择以确保您不会超出界限! (提示:使用myOptions.size()
)
答案 1 :(得分:0)
创建ArrayList
并将文件中的每一行添加到其中。如果你想制作一个文本菜单,就像打印每个菜单一样简单,并要求用户输入与他们选择的数字相对应的数字(当然有一些验证)。如果你想制作一个GUI菜单,那就更多了。