我是编程新手。 (非常) 我正在尝试创建一个统计计算器。 我并不担心这些公式以及我还需要进入的公式。这些评论是因为那些是我尝试过的东西。(哪个没有用过)这是一个菜单驱动的程序。 我选择了一个'去系列菜单,' 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]);
}
}
}
&#13;
答案 0 :(得分:0)
更改
ArrayList<integer> myList = new ArrayList<>();
到
static ArrayList<Integer> myArrayList = new ArrayList<>();
将其从主要版本移到课堂中,以便您可以在dataInput()
中使用它,如下所示:
int i = input.nextInt();
myArrayList.add( i );
当然还有更多需要解决的问题,但是应该让你了解ArrayList的蓝调。
如果仔细查看main中mainMenu()
的使用方式,您应该了解如何使用seriesMenu()
。 seriesMenu()
会返回您不做任何操作的值。它未保存在mainMenu()
之类的var中,保存在menuOption
中。 seriesMenu()
需要do while
循环拥有它。
此外,你在开关周围的while do while
构造非常古怪。不要认为你需要它比mainMenu的do while
和do while
的{{1}}更复杂。
您需要更改代码的其余部分,以便它适用于ArrayList:
seriesMenu()
请注意, //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 {
menuOption = mainMenu();
switch (menuOption) {
...
}
} while (menuOption != 'q');
中的切换看起来相同:
case: a