我正在创建一个简单的21点java程序,我被while循环输入验证难住了。当要求用户抽牌时,他/她可以选择:(是/否)以及他们是否想再次玩。我的问题是,当我被提示抽牌时,我选择y,该字符只应提示抽牌。。。但似乎任何角色都会这样做。如果我想再次比赛,同样的情况也会发生。此外,当提示我再次播放时,我想返回while循环的开始,但我似乎无法调用该函数。我需要帮助!这是我的代码:
import java.util.Random;
import java.util.Scanner;
public class BlackJack
{
public static void main(String[] args)
{
char play = 'y';
char drawAgain;
int card1, card2;
int nextCard = 0;
Scanner keyboard = new Scanner(System.in);
Random number = new Random();
while (play != 'n')
{
card1 = number.nextInt(10) + 1;
card2 = number.nextInt(10) + 1;
System.out.print("First cards: ");
System.out.println(card1 + ", " + card2);
int cardTotal = card1 + card2;
System.out.println("Total: " + cardTotal);
System.out.print("Draw again? (y/n): ");
drawAgain = keyboard.next().charAt(0);
while (drawAgain != 'n')
{
int card3 = number.nextInt(10) + 1;
System.out.println("Card: " + card3);
cardTotal += card3;
System.out.println("Total: " + cardTotal);
if (cardTotal <= 21) {
System.out.print("Draw Again? (y/n): ");
drawAgain = keyboard.next().charAt(0);
}
if (cardTotal > 21) {
System.out.println("Bust");
System.out.print("Would you like to play again? (y/n): ");
play = keyboard.next().charAt(0);
}
}
}
}
}
这段代码有一些问题。
下面讨论了这些问题。这应该是你想要的。
import java.util.Random;
import java.util.Scanner;
public class BlackJack
{
public static char getValidInput(){
Scanner keyboard = new Scanner(System.in);
String input = keyboard.next();
while(!input.equals("yes") || !input.equals("no")){
System.out.println("please input yes or no");
input = keyboard.next();
}
return input.charAt(0);
}
public static void main(String[] args)
{
char play = 'y';
char drawAgain;
int card1, card2;
int nextCard = 0;
Random number = new Random();
while (play != 'n')
{
card1 = number.nextInt(10) + 1;
card2 = number.nextInt(10) + 1;
System.out.print("First cards: ");
System.out.println(card1 + ", " + card2);
int cardTotal = card1 + card2;
System.out.println("Total: " + cardTotal);
System.out.print("Draw again? (y/n): ");
drawAgain = getValidInput();
while (drawAgain != 'n')
{
int card3 = number.nextInt(10) + 1;
System.out.println("Card: " + card3);
cardTotal += card3;
System.out.println("Total: " + cardTotal);
if (cardTotal <= 21) {
System.out.print("Draw Again? (y/n): ");
drawAgain = getValidInput();
}else{ //if (cardTotal > 21) {
System.out.println("Bust");
drawAgain ='n';
}
}
play = getValidInput();
}
}
}
我正在进行模拟测试,我正在努力创建一个循环,将循环输入12次,同时将每个输入添加到总和。 确定一个人在特定年份的平均体重。 对于每个月,您的算法应该输入该人当月的体重(正实数)。您的算法应该循环,重复输入,直到输入为正。 最后,您的算法输出平均权重。 在浏览了关于迭代控制结构的课堂笔记后,我想到了这个: 不幸的是,所有这些对我来说都是重复输入无限次,直到我输入一个大于12的数字。 我只想让控制台输
我有一个类,其中我们将“两个时态对象之间的时间量”存储到一个长变量monthBt中,并将其用作“for循环”中的测试表达式。然而,我在azure sechub中收到中级安全警告“未检查循环条件的输入”。 验证和删除警告的最佳方法是什么?谢谢
从指定范围(0,20)内且为int的用户处获取有效整数的最佳方法是什么。如果他们输入了无效的整数打印输出错误。 我在想这样的事情: 这是正确的还是有更好的方法?
问题内容: 我必须在 while 循环中显示Scanner输入:用户必须插入输入,直到他写下“ quit”为止。因此,我必须验证每个输入以检查他是否写出“ quit”。我怎样才能做到这一点? 这行不通。如何验证每个用户的输入? 问题答案: 问题是nextLine() “使该扫描程序前进到当前行之外”。因此,当您调用该条件并且不保存返回值时,您将丢失用户输入的那一行。对第3行的调用返回另一行。 您可
在生命数==0之后,while语句为false,必须退出循环。但在这种情况下,即使循环为false,也会执行循环。