为什么这个While循环不能正确执行



游戏的目标是使用while循环。在这个循环中,它将根据输入的数字决定谁赢得游戏。数字从1到20。挑战是设置为10的变量。如果<=挑战,玩家1失去一分。如果比;挑战,怪物失去一分。谁先丢3分,谁就输了比赛。我不需要生成随机数,我只需要通过扫描仪函数输入。

我认为变量对于扫描器是必要的,这就是我添加Dice变量的原因。他们没有使用,我很困惑,如果我需要他们或不使扫描仪工作,以便用户可以输入。

我也很困惑,当玩家和怪物被击中时,如何从他们身上减去轨道。这就是为什么我在每个块下面设置变量来表示它们拥有的点数。这是错误的,但我卡住了,如何正确显示这个

我能够得到一些消息显示,但任何数字都会给我相同的结果,即玩家1的-1。

基本上我被困在如何从这里写这个代码。如有任何帮助,不胜感激。

import java.util.Scanner;
public class Task3 {
public static void main(String[] args) {
task3(20);
}
public static void task3(int challenge) {
challenge = 10;
int player = 3;
int monster = 3;
Scanner sc = new Scanner(System.in);
System.out.println("Enter your dice roll");
int diceRollOne = sc.nextInt();
while (player <= challenge) {
System.out.println("Monster misses");
System.out.println("Enter your dice roll");
int diceRollTwo = sc.nextInt();
continue;
if (player <= challenge) {
System.out.println("-1 for player");
player = 2;
System.out.println("Enter your dice roll");
int diceRollThree = sc.nextInt();
} else if (player > challenge) {
System.out.println("-1 for monster");
monster = 2;
System.out.println("Enter your dice roll");
int diceRollFour = sc.nextInt();
continue;
if (player <= challenge) {
System.out.println("-1 for player");
player = 1;
System.out.println("Enter your dice roll");
int diceRollFive = sc.nextInt();
continue;
if (player > challenge) {
System.out.println("-1 for monster");
monster = 1;
System.out.println("Enter your dice roll");
int diceRollSix = sc.nextInt();
continue;
} else if (player <= challenge) {
System.out.println("-1 for player");
player = 0;
System.out.println("Monster Wins");
int diceRollSeven = sc.nextInt();
continue;
if (player > challenge) {
System.out.println("-1 for monster");
monster = 0;
System.out.println("Player wins!");
int diceRollEight = sc.nextInt();
}
}
}
}
}
}
}

在编写while-loop时,必须首先考虑循环何时终止/何时继续的条件。在您的例子中,您希望在playermonster变为0时循环结束。因此while-loop继续运行的条件是相反的,即它们都是> 0

然后考虑你想在每次迭代中做什么。在你的案例中,重复的任务是

  1. 从用户输入中读取整数
  2. challenge
  3. 比较
  4. 从对应的变量
  5. 减去1点

最后,循环结束后,您可以使用player的价值和monster确定结果并打印出来。


import java.util.Scanner; 

public class Task3 {
public static void main(String args[]) {
task3(10); 
}

public static void task3(int challenge)
{
int player = 3;
int monster = 3;
int dice = 0;

Scanner sc = new Scanner(System.in);
while(player > 0 && monster > 0)
{
System.out.println("Enter your dice roll");
dice = sc.nextInt();
if(dice > challenge)
{
monster--;
}
else
{
player--;
}
}
if(player > monster)
{
System.out.println("Player wins!");
}
else
{
System.out.println("Monster wins!");
}
}
}

注:试着理解代码,而不是只是复制粘贴到你的作业中:)

您不需要有一个单独的变量来从扫描仪获取每个输入。

您可以在while循环中每次获取输入,并将值与challenge进行比较。

只有当玩家或怪物变为0时,我们才会退出循环。一旦外循环,你可以检查,谁赢了,打印相应结果。

import java.util.Scanner;
public class Task3 {
public static void main(String[] args) {
task3(10);
}
public static void task3(int challenge) {
int player = 3;
int monster = 3;
Scanner sc = new Scanner(System.in);

int diceRoll;
while (player == 0 || monster == 0) {
System.out.println("Enter your dice roll");
diceRoll = sc.nextInt();

if(player < challenge)
player--;
else
monster--;
}
if(player < monster)
System.out.println("Player wins!");
else
System.out.println("Monster Wins");
}
}

如果你想只有1到20之间的数字作为输入,您还应该添加一个如果条件后检查这个输入

相关内容

  • 没有找到相关文章

最新更新