保龄球得分

时间:2019-07-13 00:02:53

标签: java arrays

运行代码时,它会输出其他信息。

但是,我给我的教授发了电子邮件,他说:“看起来您的循环正在从文件中提取更多数据,您的printArray方法缺少参数,该参数告诉该方法数组中有多少有效值。应该是” printArray(blue_members, blue_scores, n);“其中n是数组中有效元素的数量”

我向他展示了我的一些修复后,他回答“不!!!!!!您不理解这个概念。数组的最大容量应为10,printArray方法应将每个数组中的有效元素作为参数。数组,teamb和teamw整数对象跟踪数组中有很多有效元素。”现在,我是一个视觉人物,我不理解他的要求。

我尝试更改

String[] blue_members = new String[10], white_members = new String[10]; 
int[] blue_scores = new int[10], white_scores = new int[10];

String[] blue_members = new String[3], white_members = new String[3]; 
int[] blue_scores = new int[3], white_scores = new int[3];
import java.io.*;
import java.util.*;

// declaration of the class
public class Bowling7 

{

    public static void main(String[] args) throws FileNotFoundException 
    {
        // 1. connect to input file
        Scanner fin = new Scanner(new FileReader("bowling.txt"));

        // declare arrays below
        String Team, Member;
        int teamw, teamb, Score;
        String[] blue_members = new String[10], white_members = new String[10];
        int[] blue_scores = new int[10], white_scores = new int[10];

        // 2) initialize array accumulators to zero
        int teamblue = 0;
        int teamwhite = 0;

        // 3) display a descriptive message
        System.out.println(
                "This program reads the lines from the file bowling.txt to determine\n"
                        + "the winner of a bowling match.  The winning team, members and scores\n"
                        + "are displayed on the monitor.\n");

        // 4) test Scanner.eof() condition
        while (fin.hasNext()) 
        {
        // 5) attempt to input next line from file
         Member = fin.next();
         Team = fin.next();
         Score = fin.nextInt();


            // 6) test team color is blue
            if (Team.equals("Blue")) {


                blue_members[teamblue] = Member;
                blue_scores[teamblue] = Score;


                teamblue++;
            } else {
                white_members[teamwhite] = Member;
                white_scores[teamwhite] = Score;

                teamwhite++;
            }
        }

       if(sumArray(blue_scores) > sumArray(white_scores))
        {
            printArray("Blue", blue_members, blue_scores);

        } else {
            printArray("White", white_members, white_scores);
        }
            // 7) then store blue member and score
            // 8) increase blue array accumulator
            // 9) else store white member and score
            // 10) increase white array accumulator

        fin.close();

    }


    public static int sumArray(int[] Score) {
        int sum = 0;
        for (int i = 0; i < Score.length; i++)
            sum += Score[i];
        return sum;
    }

    public static void printArray(String Team, String[] Member, int[] Score) {
        System.out.println("Winning team:" + Team +"\n");
        System.out.println("Player Score" + "\n");
        for (int i = 0; i < Member.length; i++) {
            System.out.printf(Member[i] + ":" + Score[i] + "\n");
        }
    }
}

保龄球。 txt包含

Harry Blue 35
Tony White 43
Hilda Blue 92
Paul White 34
Tom White 20

输出

This program reads the lines from the file bowling.txt to determine
the winner of a bowling match.  The winning team, members and scores
are displayed on the monitor.

Winning team:Blue

Player Score

Fred:20
Harry:35
Hilda:92
null:0
null:0
null:0
null:0
null:0
null:0
null:0

(我不应该得到null:0)

2 个答案:

答案 0 :(得分:0)

当使用Member.length打印数组的所有元素时,具有某些值的数组有效,而其他值仍未分配,并且在Member和Score数组中分别为null或0。会打印整个数组,而不管某些元素是否为null。但是,当您将有效元素的数量传递为3(或其他)时,只会打印数组的前3个元素,而数组仍被分配为null 。只是您没有在打印它。 他要求将您的阵列打印到3,而不是操纵阵列的大小。

public static void printArray(String Team, String[] Member, int[] Score,int valid) {
        System.out.println("Winning team:" + Team +"\n");
        System.out.println("Player Score" + "\n");
        for (int i = 0; i < valid; i++) {
            System.out.printf(Member[i] + ":" + Score[i] + "\n");
        }
    }

答案 1 :(得分:0)

该数组的最大容量为10,因此其length为10。但是,该数组仅被部分填充,其余值为null s。

由于使用最大容量值遍历数组,因此在输出中得到了null个。

您需要在length方法中添加printArray()参数,以表示确实存在的许多元素,并使用它代替Member.length

public static void printArray(String Team, String[] Member, int[] Score, int length) {
    System.out.println("Winning team:" + Team +"\n");
    System.out.println("Player Score" + "\n");
    for (int i = 0; i < length; i++) {
        System.out.printf(Member[i] + ":" + Score[i] + "\n");
    }
}

然后,以适当的团队长度调用此方法,例如:

printArray("Blue", blue_members, blue_scores, teamblue);