Я пытаюсь сделать простую программу для костей, которая принимает пользовательский ввод для количества сторон и количества костей, которые они хотят катить, и выводит рулон для каждой кости. Я включил цикл while, который позволяет пользователю перезапустить одинаковое количество костей с одинаковым количеством сторон без необходимости повторного ввода информации, которую они ранее вводили. Проблема, с которой я сталкиваюсь, - это не повторение риса, когда я вызываю метод «q» в выражении «if» цикла while. Совет ?:Второй вызов метода не будет excute (java)
import java.util.Random;
import java.util.Scanner;
public class Choice_Dice {
static int t = 0, sides, c=0, d =0;
public static void main(String [] Mack){
Scanner scan = new Scanner(System.in);
String y ="y";
System.out.println("You may roll a dice with any number of sides");
System.out.println("Enter the number of sides you would like to the dice to have: ");
sides = scan.nextInt();
System.out.println("Enter the number of dice you want to roll: ");
t = scan.nextInt();
q();
while(y.equals("y"))
{
System.out.println("Would you like to roll again(y or n): ");
y = scan.next();
if(y.equals("y")){
q();
}
else
System.out.println("Thanks");
}
}
public static void q()
{
int[] x = new int[t];
c = 0;
while(c != t)
{
x[c] = roll(sides);
c++;
}
while(d != t)
{
System.out.println("You rolled " + x[d]);
d++;
}
}
public static int roll(int s)
{
Random generator = new Random();
int dice = 0;
dice = generator.nextInt(4) + 1;
return dice;
}
}
Вы должны сбросить 'd'. Кроме того, вы никогда не используете «стороны». Используйте его вместо жесткого кодирования '4'. –
Если это настоящие имена ваших методов/переменных, пожалуйста, серьезно передумайте переименовать их в более самоопределяющийся способ. – ssantos
Извините за переменные, плохо переименуйте их очень быстро. Также спасибо за определение этого жесткого кода. –