#java
#java
Вопрос:
Похоже, что мои методы не печатают printstream
должным образом. Кажется, что печатается что-то только та часть, которая говорит isOutComeNew()
. Однако даже этот, похоже, печатает последнее введенное число. randOm()
Метод также, похоже, единственный, который работает должным образом.
Я не знаю, почему это происходит.
public class Assignment3 {
public static int number1, number2, result, newResult, newNumber1, newNumber2;
public static int winner1 = 5, winner2 = 7, winner3 = 12;
public static int loser1 = 2, loser2 = 4, loser3 = 11;
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) throws Exception {
PrintStream ps = new PrintStream("Assignment3.txt");
promptUser();
number1 = input.nextInt();
System.out.println("Please enter another integer between 1-6 ");
number2 = input.nextInt();
do {
ps.println("You rolled a" number1 "and a " number2);
isValid();
result = outCome(number1, number2);
ps.printf("The outcome is %d n", result);
isOutcome();
newNumber1 = number1 2;
newNumber2 = number2 3;
newNumbers();
result = outCome(newNumber1, newNumber2);
ps.printf("The outcome is %d n", result);
isOutcomeNew();
promptUser();
number1 = input.nextInt();
System.out.println("Please enter another integer between 1-6 ");
number2 = input.nextInt();
}while ((number1 != 99) amp;amp; (number2 != 95));
randOm();
}
public static void promptUser() {
System.out.println("In order to stop please enter 99 and 95 to end the game. ");
System.out.println("Please enter an integer between 1-6. ");
}
public static int outCome(int x, int y) {
int sum;
sum = x y;
return (sum);
}
public static void isValid()throws Exception {
PrintStream ps= new PrintStream("Assignment3.txt");
while ((number1 < 1 || number1 > 6) || (number2 < 1 || number2 > 6)) {
System.out.println("This set of dice rolls is invalid. Please enter another set. n");
System.out.println("Please reenter a number between 1 and 6. ");
number1 = input.nextInt();
System.out.println("Please reenter a number between 1 and 6. ");
number2 = input.nextInt();
System.out.printf("You rolled a %d and a %dn", number1, number2);
}
}
// method for determining winner, loser ,or draw
public static void isOutcome() throws Exception {
PrintStream ps = new PrintStream("Assignment3.txt");
// integer value for winner is 1, int value for loser is -1 and int value for draw is 0
int winner = 1;
int loser = -1;
int draw = 0;
int oldCount = 0, oldLose = 0, oldDraw = 0;
if ((result == winner1) || (result == winner2) || (result == winner3)) {
System.out.println(winner);
oldCount ;
} else if ((result == loser1) || (result == loser2) || (result == loser3)) {
System.out.println(loser);
oldLose ;
} else {
System.out.println(draw);
oldDraw ;
}
System.out.printf("The amount of wins are %d n", oldCount);
System.out.printf("The amount of losses are %d n", oldLose);
System.out.printf("The amount of draws are %d n", oldDraw);
}
public static void isOutcomeNew() throws Exception {
int winner = 1;
int loser = -1;
int draw = 0;
int newCount = 0, newLose = 0, newDraw = 0;
PrintStream ps = new PrintStream("Assignment3.txt");
if ((result == winner1) || (result == winner2) || (result == winner3)) {
System.out.println(winner);
newCount ;
} else if ((result == loser1) || (result == loser2) || (result == loser3)) {
System.out.println(loser);
newLose ;
} else {
System.out.println(draw);
newDraw ;
}
System.out.printf("The amount of computer wins are %d n", newCount);
System.out.printf("The amount of computer losses are %d n", newLose);
System.out.printf("The amount of computer draws are %d n", newDraw);
}
//
public static void newNumbers() throws Exception {
PrintStream ps = new PrintStream("Assignment3.txt");
while (newNumber1 > 6 || (newNumber2 > 6)) {
if (newNumber1 > 6) {
newNumber1 = (newNumber1 - 6);
System.out.printf("The computer rolled %d n", newNumber1);
}
if (newNumber2 > 6) {
newNumber2 = (newNumber2 - 6);
System.out.printf("The computer rolled %d n", newNumber2);
}
}
System.out.printf("The computer rolled %d and a %dn", newNumber1, newNumber2);
}
Комментарии:
1. Плохое название. Следует кратко изложить вашу конкретную техническую проблему.
Ответ №1:
Похоже, что что-то печатает только та часть, которая говорит, что isOutComeNew().
У вас есть несколько методов, которые делают это:
PrintStream ps = new PrintStream("Assignment3.txt");
Каждый из этих вызовов открывает новый поток для выходного файла и обрезает файл. Это означает, что выходные данные, которые вы написали ранее, будут удалены.
Решения:
-
Откройте
PrintStream
только один раз и передайтеps
методам в качестве параметра метода или через переменную экземпляра или класса. -
При создании экземпляра
PrintStream
откройте его в режиме «добавить». Вы не можете сделать это напрямую, но вы можете сделать это, создавFileOutputStream
в режиме добавления, а затем передав это вPrintStream
конструктор.