我正在尝试编写一个程序,它反复要求用户在测试中提供分数(满分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));
}
}
答案 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风格的标签)但我现在还不记得语法。