一维ArrayList基本统计计算器

时间:2014-11-19 04:23:03

标签: java arrays netbeans arraylist statistics

我是编程新手。 (非常) 我正在尝试创建一个统计计算器。 我并不担心这些公式以及我还需要进入的公式。这些评论是因为那些是我尝试过的东西。(哪个没有用过)这是一个菜单驱动的程序。 我选择了一个'去系列菜单,' 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]);
    }

  }

}

以下是我所拥有的更新代码,但我收到了很多错误,我认为我只想回到原版并再试一次。

&#13;
&#13;
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;
&#13;
&#13;

1 个答案:

答案 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 whiledo 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