如何从数组计算输入

时间:2019-05-03 23:19:56

标签: java

我正在处理的这个数组有麻烦。在for循环中,我需要以某种方式计算基准百分比。索引为0的元素将存储OBP。如何保存用户输入的信息以计算OBP?谢谢。

     for (int index = 0; index < years.length; index++)
     {
       System.out.print("For Year " + (index +1 ) + "\nEnter number of hits: ");
       years[index] = keyboard.nextInt();

       System.out.print("For Year " + (index +1) + "\nEnter number of walks: ");
       years[index] = keyboard.nextInt();

       System.out.print("For Year" + (index +1) + "\nEnter the number of times player"
                          + "has been hit by a pitch:");
       years[index] = keyboard.nextInt();

       System.out.print("For Year" + (index +1) + "\nEnter the number of at bats:");
       years[index] = keyboard.nextInt();

       System.out.print("For Year" + (index +1) + "\nEnter the number of sacrafice flies" 
                          + "that year: ");
       years[index] = keyboard.nextInt();

     }

3 个答案:

答案 0 :(得分:1)

在这种情况下,我建议在HashMap中使用HashMap。

循环前:

HashMap<Integer, HashMap<String, Integer>> years = new HashMap<>();
HashMap<String, Integer> entry = new HashMap<>();

对于用户键盘的每次输入(示例):

entry.put("hits", 5);
years.put(2019, entry);

entry.put("walks", 10);
years.put(2019, entry);

最后,您得到的结果如下:

{2019={hits=5, walks=10}}

检索结果也很简单:

// retrieve map of data for a specific year:
years.get(2019)

result: {hits=5, walks=10}

// retrieve specific data for a specific year:
years.get(2019).get("hits")

result: 5

答案 1 :(得分:0)

您需要将用户输入的值存储在变量中。不用输入数组(这是一种输入方法),您只需将每个值存储在单独的变量中,然后最后进行计算即可。

请参阅下面的示例代码:

public static void main(String args[]) {
    // let's take incoming values from the user for our calculations
    Scanner keyboard = new Scanner(System.in);

    // we'll use this array to store the values entered by the user
    // in position zero of the array we'll store the OBP
    // in positions 1-5 we'll store the inputs as entered by the uesr
    float[] values = new float[6];

    // we'll use this flag to determin if we should ask the user input again or quit the program
    boolean letsDoThisAgain = true;

    while (letsDoThisAgain){
        System.out.println("Enter a Year: ");
        int year = keyboard.nextInt();

        System.out.println("For Year " + year + ", enter number of:");
        System.out.println("Hits: ");
        values[1] = keyboard.nextFloat();

        System.out.println("Walks: ");
        values[2] = keyboard.nextFloat();

        System.out.println("Number of times player has been hit by a pitch: ");
        values[3] = keyboard.nextFloat();

        System.out.println("Number of at bats: " );
        values[4] = keyboard.nextFloat();

        System.out.println("Number of sacrifice flies: ");
        values[5] = keyboard.nextFloat();

        // calculate the OBP
        values[0] = (values[1] + values[2] + values[3] - values[5] ) / values[4]; // or however you calculate it

        System.out.println("OBP: " + values[0]);

        System.out.println("------");
        System.out.println("Do you want to do it again? (y/n): ");
        String quitOrDoItAgain = keyboard.next();

        if( "n".equalsIgnoreCase(quitOrDoItAgain)){
            letsDoThisAgain = false;
        }
    }
    System.out.println("Thanks for playing... Good Bye!");
}

答案 2 :(得分:0)

通过使用诸如Map<string year, object playerstats> including OBP calculation on the object player stats before storing之类的适当数据结构,但这是一种内存中的解决方案,只有在您希望持久化之后才在程序运行之前,然后在数据库侧查看

从呈现代码的方式来看,似乎您总是在覆盖year [index]处的值。

如果您只想使用数组,请像

years[index] = year[index] (math operation) keyboard.nextInt()