java - 为什么这个 While 循环不能正确执行
问题描述
游戏的目标是使用一个while循环。在这个循环中,它将根据输入的数字确定谁赢得了比赛。数字从 1 到 20。Challenge 是设置为 10 的变量。如果 <= Challenge,playerOne 将失去一分。如果 > 挑战,怪物将失去一分。谁先丢 3 分,谁就输了。我不需要生成随机数,我只需要通过扫描仪功能输入。
我认为变量对于扫描仪来说是必要的,这就是我添加 Dice 变量的原因。它们没有被使用,我很困惑是否需要它们来使扫描仪工作,以便用户可以进行输入。
当玩家和怪物被击中时,我也对如何从玩家和怪物进行子跟踪感到困惑。这就是为什么我为每个块下的变量设置它们拥有的点数。这是错误的,但我不知道如何正确显示它。
我能够得到一些要显示的消息,但任何数字都会给我相同的结果,即玩家一的 -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循环时,必须首先考虑循环何时终止/循环何时继续的条件。在您的情况下,您希望循环在player
or 或monster
become时结束0
。因此while循环继续运行的条件是相反的,即两者都是> 0
。
然后想想你想在每次迭代中做什么。在您的情况下,重复性任务是
- 从用户输入中读取一个整数
- 将整数与
challenge
- 从对应的变量中减去 1 分
最后,循环结束后,可以使用player
and的值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!");
}
}
}
PS 试着理解代码,而不是仅仅复制粘贴到你的作业中:)
推荐阅读
- javascript - 内联 JavaScript 验证不起作用
- angular - 尽管有 dataSource,mat-table angular 6 没有显示任何数据
- python - 将数据库参数传递给 peewee Meta 类
- web-services - 多个 Web 服务背后的逻辑
- swift - 曲线搜索栏 Swift 4
- c++ - 将临时对象移到成员函数之外
- python - 占位符的值不正确
- java - gradle 预编译 SpringSource 项目失败
- java - TreeItem.branchExpandedEvent() 中的 NullPointerException 试图获取图形
- ruby-on-rails - 通过参数检索记录会导致“id”的未定义方法错误