我是编程新手。 (非常) 我正在尝试创建一个统计计算器。 我并不担心公式以及我仍然需要输入的内容。评论之所以存在,是因为这些是我尝试过的事情。(但没有成功)它是一个菜单驱动的程序。 我选择“a”进入系列菜单,然后再次选择“a”输入数字。 我正在尝试修复代码以接受未知值的 ArrayList。这样人们就可以输入任意数量的数字,并且程序的其余部分将继续正常运行。我现在将其设置为 5 个数组。
(1) 有没有办法修复代码以接受 ArrayList?使用评论你可以看到我尝试过的事情。当我现在运行它时,它可以编译并运行良好,但是当我使用 ArrayList 时,我收到错误。我真的需要一些帮助。我被困住了。在讨论下一个案例之前,我正在处理这一部分。我希望它只是提示用户输入数字列表,然后使用它来根据要求执行计算器中的其余功能。请帮忙。这可能很简单,但它却要了我的命。
(2) 另外,当我运行代码并到达可以输入第一个数字的位置时,它会带我一路返回主菜单。我希望它保留在子菜单/系列菜单中,直到用户选择“q”。
import java.util.Scanner; // Scanner is in the java.util package
//import java.util.ArrayList;
//import java.util.List;
class FloatWrapper {
public float value;
public FloatWrapper(float param) {
value = param;
}
}
public class BasicCalculator {
public static void main(String[] args) {
int menuOption = 0;
//List myList = new ArrayList();
double[] myList = new double[5];
//ArrayList<integer> myList = new ArrayList<>();
int counter = 0;
while (menuOption != 'q')
do {
menuOption = mainMenu();
switch (menuOption) {
case 'a':
{
switch (seriesmenu()) {
case 'a':
myList[counter] = dataInput();
counter++;
break;
case 'q':
mainMenu();
break;
default:
seriesmenu();
}
}
break;
//case 'b' :
//case 'c' :
//case 'd' :
//case 'e' :
case 'f':
display(myList);
break;
//case 'g' :
//case 'h' :
//case 'i' :
//case 'j' :
case 'q':
System.exit(0);
return;
}
}
while (menuOption != 'q');
}
//Main Menu Display
static char mainMenu() {
Scanner input = new Scanner(System.in);
System.out.println("\n\nBASIC CALCULATOR");
System.out.println(" a. Insert Series");
System.out.println(" b. Mean");
System.out.println(" c. Median");
System.out.println(" d. Mode");
System.out.println(" e. Standard Deviation\n");
System.out.println(" f. Show Series");
System.out.println(" g. Show Elements Greater than Mean");
System.out.println(" h. Show Elements Less than Mean");
System.out.println(" i. Show Series in Order");
System.out.println(" j. Show Full Report\n");
System.out.println(" q. Quit");
System.out.print("Insert option: ");
return (input.next().charAt(0));
}
//Menu to insert values
static char seriesmenu() {
Scanner input = new Scanner(System.in);
System.out.println("\n\nSeries Options");
System.out.println(" a. Enter New Number");
System.out.println(" q. Back to Calculator");
System.out.print("Insert option: ");
return (input.next().charAt(0));
}
//Reads input from keyboard (menu, values, etc)
static double dataInput() {
Scanner scanner = new Scanner(System.in);
Scanner input = new Scanner(System.in);
System.out.print(" Enter a Number: ");
double i = input.nextInt();
return i;
}
//displays array
static void display(double[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
这是我更新的代码,但我收到了很多错误,我想我想返回到原始代码并重试。
import java.util.Scanner; // Scanner is in the java.util package
import java.util.ArrayList;
import java.util.List;
class FloatWrapper{
public float value;
public FloatWrapper(float param){
value=param;
}
}
public class BasicCalculator {
ArrayList<Integer> myArrayList = new ArrayList<>();
public static void main(String[] args)
{
int menuOption = 0;
//List myList = new ArrayList();
double [] myList = new double [10];
int counter =0;
//while(menuOption != 'q')
do{
menuOption = mainMenu();
switch(menuOption)
{
case 'a':
{
do{
seriesOption = seriesmenu();
switch(seriesmenu())
{
case 'a' :
myList[counter] = dataInput();
counter++;
break;
case 'q':
mainMenu();
break;
default:
seriesmenu();
} while (seriesOption != 'q');
}break;
//case 'b' :
//case 'c' :
//case 'd' :
//case 'e' :
case 'f' : display(myList);
break;
//case 'g' :
//case 'h' :
//case 'i' :
//case 'j' :
case 'q': System.exit(0);
return;
}
}
while(menuOption != 'q');
}
//Main Menu Display
static char mainMenu()
{
Scanner input=new Scanner(System.in);
System.out.println("\n\nBASIC CALCULATOR");
System.out.println(" a. Insert Series");
System.out.println(" b. Mean");
System.out.println(" c. Median");
System.out.println(" d. Mode");
System.out.println(" e. Standard Deviation\n");
System.out.println(" f. Show Series");
System.out.println(" g. Show Elements Greater than Mean");
System.out.println(" h. Show Elements Less than Mean");
System.out.println(" i. Show Series in Order");
System.out.println(" j. Show Full Report\n");
System.out.println(" q. Quit");
System.out.print("Insert option: ");
return(input.next().charAt(0));
}
//Menu to insert values
static char seriesmenu()
{
Scanner input=new Scanner(System.in);
System.out.println("\n\nSeries Options");
System.out.println(" a. Enter New Number");
System.out.println(" q. Back to Calculator");
System.out.print("Insert option: ");
return(input.next().charAt(0));
}
//Reads input from keyboard (menu, values, etc)
static double dataInput()
{
Scanner scanner = new Scanner(System.in);
Scanner input=new Scanner(System.in);
System.out.print(" Enter a Number: ");
//double i = input.nextInt();
int i = input.nextInt();
myArrayList.add( i );
return i;
}
//displays array
static void display(double [] args)
{
for (int i = 0; i < args.length ; i++)
{
System.out.println(args[i]);
}
}
}
最佳答案
改变
ArrayList<integer> myList = new ArrayList<>();
至
static ArrayList<Integer> myArrayList = new ArrayList<>();
并将其从 main 移出到类中,以便您可以在 dataInput()
中使用它像这样:
int i = input.nextInt();
myArrayList.add( i );
当然还有更多需要修复的地方,但这应该能让您克服 ArrayList 的忧郁症。
<小时/>如果你仔细观察 mainMenu()
在 main 中使用,您应该看到如何使用 seriesMenu()
以及。 seriesMenu()
返回一个您不执行任何操作的值。它没有保存在像 mainMenu()
这样的 var 中返回值保存在menuOption
中。 seriesMenu()
需要 do while
它自己的循环。
此外,while do while
构建你绕过开关的想法是相当古怪的。不要认为您需要它比单个 do while
更复杂主菜单和单个 do while
对于seriesMenu()
.
您需要更改其余代码,以便它可以与 ArrayList 一起使用:
//Reads input from keyboard (menu, values, etc)
static void dataInput() {
Scanner input = new Scanner(System.in);
System.out.print(" Enter a Number: ");
int i = input.nextInt();
myArrayList.add( i );
}
//displays array
static void display(ArrayList<?> args) {
for (int i = 0; i < args.size(); i++) {
System.out.println(args.get(i));
}
}
请注意dataInput()
不再返回任何内容,因此进行更改
myList[counter] = dataInput();
到只是dataInput();
好吧,我给你一个关于内在的大提示do while
循环
注意该模式是如何进行 do-switch-while 的。您想在内部开关上执行相同的模式。
do {
menuOption = mainMenu();
switch (menuOption) {
...
}
} while (menuOption != 'q');
在case: a
中进行切换看起来一样:
do {
seriesOption = seriesmenu();
switch (seriesOption) {
...
}
} while (seriesOption != 'q');
关于java - 一维ArrayList基本统计计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27008906/