具有用户输入的数组

时间:2014-02-14 00:22:15

标签: java arrays input

我正在尝试编写一个程序,它反复要求用户在测试中提供分数(满分10分)。它需要继续,直到提供负值。应忽略高于10的值。我还计算了输入的平均值。输入分数后,我需要使用单个数组来生成一个表格,该表格会自动填写测试分数和某个测试分数的出现次数。

我希望它看起来像这样:

Score | # of Occurrences  

    0   3    
    1   2
    2   4
    3   5 
    4   6

等等.P

我是初学者,这是我的第一个问题,所以如果我在发布问题时出错,我很抱歉。

import java.io.*;
import java.util.*;

public class Tester1
{
public static void main()
{   
    Scanner kbReader= new Scanner (System.in);

    int score[] = new int [10];//idk what im doing with these two arrays
    int numofOcc []= new int [10];

    int counter=0;
    int sum=0;

    for (int i=0;i<10;i++)// Instead of i<10... how would i make it so that it continues until a negative value is entered.
    {
        System.out.println("Enter score out of 10");
        int input=kbReader.nextInt();

        if (input>10)
        {
            System.out.println("Score must be out of 10");

        }
        else if (input<0)
        {
            System.out.println("Score must be out of 10");
            break;
        }
        else 
        {
            counter++;
            sum+=input;

        }
    }
    System.out.println("The mean score is " +(sum/counter));

  }
}

3 个答案:

答案 0 :(得分:0)

我认为你需要的是一个列表数组! Create ArrayList from array

将其视为动态数组,您无需指定数组的大小,而是自动扩展/缩小。

答案 1 :(得分:0)

你缺少的是一个while循环。这是循环扫描仪输入的好方法。它还会捕获大于10的数字并提供错误消息:

public static void main() {
    Scanner s = new Scanner(System.in);
    ArrayList<Integer> list = new ArrayList<Integer>();
    int response = 0;
    while (response >= 0) {
        System.out.print("Enter score out of 10: ");
        response = s.nextInt();
        if (response > 10) {
            System.out.println("Score must be out of 10.");
        } else if (response >= 0) {
            list.add(response);
        }
    }
    // Do something with list
}

答案 2 :(得分:0)

您可以像这样使用do...while循环:

import java.io.*;
import java.util.*;

public class Tester1
{
    public static void main(String args[]) {
        Scanner kbReader= new Scanner (System.in);

        int scores[] = new int [10];

        int counter = 0;
        int sum = 0;    
        int input = 0;

        do {
            System.out.println("Enter score out of 10 or negative to break.");
            input=kbReader.nextInt();

            if (input<0) {
                break;
            } else if (input>10) {
                System.out.println("Score must be out of 10");
            } else {
                scores[input]++;
                counter++;
                sum+=input;
            }
        } while (input>0);

        System.out.println("Score\t# of occur...");
        for(int i =0; i<10; i++) {
            System.out.println(i + "\t" + scores[i]);
        };

        System.out.println("The mean score is " +(sum/counter));
    }
}

格式化当然可以做得更好(没有c风格的标签)但我现在还不记得语法。