Я пишу программу Java, которая будет играть в игру. В принципе вы выбираете no. игроков и раундов, то программа показывает вам, что каждый игрок должен сказать, по порядку, с учетом следующих правил:Обнаружение, когда целое число состоит только из одной цифры
-Удаление игроков стоит по кругу, они начинают подсчитывать один за другим по часовой стрелке, пока кто-то не достигнет число (больше 10), состоящее только из одной цифры. Например, 11, 22, 33, .., 444 и т. Д., Затем они начинают отсчет против часовой стрелки
например: P9: 9; P10: 10; P11: 11; P12: 13; P11: 14 и т.д. (P10 = Игрок 10)
-Когда получите число, которое является кратным 7, содержит 7 или сумма цифр 7, они говорят «Болц»
Например : P1: 13; P2: Boltz (вместо 14); P3: 15; P4 Boltz (16); P5: Boltz (17); P6: 18 и т.д.
У меня есть код на Java, но я не могу показаться, чтобы получить переключение с по часовой стрелке поворачивается против часовой при числах, составленных только из одной цифры
Можете ли вы мне помочь Функция SameDigits? Спасибо!
import java.util.Scanner;
public class Boltz {
private static Scanner keyboard;
public static void main(String[] args) {
keyboard = new Scanner(System.in);
int nPlayers = 0;
int nRounds = 0;
int currentPlayer = 0;
int sum = 0;
int x = 0;
boolean isSameDigit = true;
System.out.print("Cati jucatori sunt? ");
nPlayers = keyboard.nextInt();
System.out.print("Cate runde sunt? ");
nRounds = keyboard.nextInt();
System.out.print("Jucatori: " + nPlayers + "; Runde: " + nRounds + "\n");
for (x = 1; x <= nPlayers * nRounds; x++) {
isSameDigit = SameDigits(currentPlayer);
if (currentPlayer < nPlayers && isSameDigit == false) {
currentPlayer++;
} else {
currentPlayer = 1;
}
if (currentPlayer > 1 && isSameDigit == true) {
currentPlayer--;
} else {
currentPlayer = nPlayers;
}
sum = digitSum(x);
if (x % 7 == 0 || String.valueOf(x).contains("7") || sum == 7) {
System.out.println("P:" + currentPlayer + " Boltz");
} else {
System.out.println("P:" + currentPlayer + " " + x);
}
}
}
public static int digitSum(int num) {
int suma = 0;
while (num > 0) {
suma = suma + num % 10;
num = num/10;
}
return suma;
}
public static boolean SameDigits(int num) {
int add = 0, add2 = 0;
while (num > 0) {
add = add + num % 10;
add2 = add2 + add % 10;
num = num/10;
}
if (add == add2) {
return true;
} else {
return false;
}
}
}
Почему вы возвращаете false, когда 'number <10'? – shmosel
Я основываю его на правиле «при условии, что игроки стоят по кругу, они начинают подсчитывать один за другим по часовой стрелке, пока кто-то не достигнет числа (более 10), сделанного только одной цифры. Например, 11, 22, 33 , .., 444 и т. Д., Тогда они начинают отсчет против часовой стрелки ". Кроме того, довольно легко изменить;) –
Достаточно справедливо. Наверное, это не самый лучший метод. – shmosel