Подсчет выигрышей в игре в пинг-понг

Создайте метод в Scores.java, который принимает 2 аргумента: player1Scores и player2Scores. Метод должен вывести количество игр, выигранных игроком1, и количество игр, выигранных игроком2.

Это последняя часть задания, данного нашим учителем, и я не могу понять, с чего начать. Я думал о простом сравнении каждой победы, но это не предусмотрено Player1Score. Он хранит только текущий счет игры, которая происходит. Мне нужно уметь подсчитывать все игры, которые произошли. Любая идея, как я могу добавить это в свой код? Вот фрагмент программы, над которой я сейчас работаю.

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Scores {

public static void main (String args[]) 

{


}
static String allScoresFilename = "allscores.txt";

static String lastScoreFilename = "lastscores.txt";

public boolean writeScores(int player1Score, int player2Score) throws IOException {

PrintWriter scores = new PrintWriter (new File ("Score.txt"));

    scores.println("Player 1 \t Player 2 \n " +player1Score+"\t\t\t " +player2Score);

PrintWriter scores1 = new PrintWriter(new BufferedWriter(new FileWriter("Scores Append", true)));

    scores1.println("Player One:"+player1Score+"\tPlayer Two:"+player2Score);

    scores1.close();

    scores.close();

    return true;

}//End writeScores

public boolean appendScores(int player1Score, int player2Score) throws IOException{

    return true;

}//End appendScores

public void readScores() throws FileNotFoundException

{

    File scores = new File ("Scores Append");

    Scanner fileScanner = new Scanner (scores);

    fileScanner.useDelimiter("[\t|,|\n|\r|:]+");

    String players, player1;

    int numbers, i=0;

    int []p1= new int[10];

    int []p2= new int[10];

    while (fileScanner.hasNext())
    {

        players = fileScanner.next();

        p1[i] = fileScanner.nextInt();

        player1 = fileScanner.next();

        p2[i] = fileScanner.nextInt();

        System.out.println ("p1 is currently "+ p1[i]);

        System.out.println ("p2 is currently "+ p2[i]);

        i++;
    }

}//End readScores

public boolean wins(int player1Score, int player2Score) throws IOException

{

    return true;

}//End wins
}

person Charles211    schedule 31.01.2014    source источник


Ответы (2)


Возьмите объявление для этих массивов вне readScores() и поместите его вверху вашего класса, чтобы вы могли вызывать wins с ними.

int []p1= new int[10];

int []p2= new int[10];

Измените подпись wins на это:

public void wins(int []player1Scores, int []player2Scores)
{
    int player1Wins = 0;
    int player2Wins = 0;

    for (int i = 0; i < 10; i++)
        (player1Scores > player2Scores) ? player1Wins++ : player2Wins++;

    System.out.printf("Player 1 wins: %-10i Player 2 wins %-10i", player1Wins, player2Wins);
}//End wins

Я не буду отвечать на какие-либо комментарии по этому поводу, потому что я очень занят сегодня вечером, но удачи, Чарльз.

person michaelsnowden    schedule 01.02.2014
comment
Огромное спасибо. Это определенно сблизило меня! - person Charles211; 01.02.2014

У вас уже есть функция readScores, которая считывает список очков игрока 1 и игрока 2. Исходя из этого, вы можете легко просмотреть эти массивы и определить, какой игрок выиграл каждую игру.

person Edward    schedule 31.01.2014
comment
Есть ли шанс, как мне это сделать? Поскольку это недействительное заявление, я не могу вернуть из него какую-либо информацию, верно? - person Charles211; 01.02.2014
comment
Вы могли бы сделать пару вещей. Можно было бы изменить класс так, чтобы он запоминал оценки, а не просто выбрасывал их в конце функции. Один или два закрытых члена данных в вашем классе Scores могут быть способом сделать это. - person Edward; 01.02.2014
comment
Также обратите внимание, что в задании указано, что входными данными являются player1Scores (множественное число) и player2Scores (множественное число). Это дает намек на то, что прохождение одиночных баллов — это не то, что вы должны там делать. - person Edward; 01.02.2014
comment
Будет ли достаточно изменить его на int и вернуть p1[i] и p2[i]? Я думаю об этом или вызываю весь метод readScores в методе wins, затем беру, а затем сравниваю и сопоставляю результаты там. Это возможно? - person Charles211; 01.02.2014
comment
Рассмотрите возможность изменения вашего метода с public boolean wins(int player1Score, int player2Score) throws IOException на public void printWins(int player1Scores[], int player2Scores[]) throws IOException и подумайте, как можно написать этот метод и как его можно вызвать. - person Edward; 01.02.2014
comment
Спасибо. Будет ли то, что я сказал о p1[i] и p2[i], тоже идти в правильном направлении? - person Charles211; 01.02.2014