当前位置: 首页 > 知识库问答 >
问题:

使用while循环保持分数的问题(Java)

漆雕和雅
2023-03-14

我的代码:

    import java.util.*;

class asd {


    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);
        System.out.println("Welcome Valued player, take your guess!");


        int min = 0;
        int max = 100;
        int input;
        int c = 21;
        int count = 0;
        int userscore = 0;
        int dealerscore = 0;
        int gamesplayed = 0;


        Random rand = new Random();


        int r = rand.nextInt(max - min) + min;
        input = sc.nextInt();
        System.out.println("computer's number:" + r);


        if (Math.abs(input - c) <= Math.abs(r - c)) {
            System.out.println("the winner is the user!" + input);
            dealerscore++;
            gamesplayed++;


        } else {
            System.out.println("the winner is the computer!" + r);
            userscore++;
            gamesplayed++;
        }
        if (input == c) {
            System.out.println("thank you for playing. you won.");

        }

        if (r == c) {
            System.out.println("Thank you for playing:" + userscore);
            System.out.println(userscore);


        }

        if (input == 0) {
            System.out.println("Number of hands played:" + gamesplayed);
            System.out.println("Dealer won:" + dealerscore);
            System.out.println("User won:" + userscore);
        }

        while (input != c && r != c)
            gamesplayed++;


    }


    // TODO code application logic here
}

一切正常,但我不能让循环在任何地方工作。

共有1个答案

羊舌高爽
2023-03-14

你需要一个包含游戏逻辑的while循环。条件应该只检查输入!=c

然后在循环内部,不断询问用户输入。此外,在添加分数时,您混淆了userscoredealerscore

然后在结束时,一旦你从循环中出来,你就可以打印分数/统计数据了。

import java.util.*;

public class MyClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Welcome Valued player, take your guess!: ");

        int min = 0;
        int max = 100;
        int input;
        int c = 21;
        int count = 0;
        int userscore = 0;
        int dealerscore = 0;
        int gamesplayed = 0;

        Random rand = new Random();
        int r = rand.nextInt(max - min) + min;
        input = sc.nextInt();

        /*
        This loop runs the game until the user enters 21
        */
        while (input != c) {
            System.out.println("Computer's number:" + r);

            if (Math.abs(input - c) <= Math.abs(r - c)) {
                System.out.println("The winner is the user! " + input);
                userscore++; //You mixed up userscore and dealerscore
            } else {
                System.out.println("The winner is the computer! " + r);
                dealerscore++; //You mixed up userscore and dealerscore
            }

            /*
            User needs to keep entering guesses
            */
            System.out.println();
            System.out.println("Enter another guess: ");
            r = rand.nextInt(max - min) + min;
            input = sc.nextInt();
        }

        /*
        You don't need any conditions since the games have already ended
        But it should be outside and after the loop
        */
        System.out.println("Number of hands played:" + gamesplayed);
        System.out.println("Dealer won:" + dealerscore);
        System.out.println("User won:" + userscore);
    }
}

 类似资料:
  • 这段代码是为一个基本的杂货计算器的按钮。当我按下按钮时,一个输入对话框显示您在哪里输入您的商品价格。我遇到的问题是,我不知道如何获得循环,使输入对话框在输入后弹出。 我希望它总是回来,除非用户选择ok与nothing或cancel,在这种情况下,循环应该中断并填充剩余的框。使用当前的代码,我必须每次手动按下按钮来恢复对话框。我一直在玩不同的while条件和if语句,但我似乎无法让它发挥作用。我是一

  • while循环开始之前的语句没有打印,并且从1开始没有打印循环中的值。相反,它从一个随机的大int开始打印。

  • 问题内容: 我的Java应用程序在编译代码时遇到问题,它说它找不到符号 roomLength 。应用程序应该执行的操作是提示用户输入房间名称,然后如果该房间名称为“退出”,则必须关闭该程序。否则会提示输入房间的长度,宽度和高度。如果这些尺寸中的任何一个等于或小于零,它将再次提示输入尺寸。 这是我的主要方法。 提前致谢!;) 还有一个几乎与此问题类似的问题,只是它应该循环回到第一个提示,允许用户输入

  • 我已经有几年没有编写代码了,一直在编写简单的Java程序来重新熟悉基本原理。然而,我很难让我的do-while循环按照我想要的方式运行。我想我并不完全理解do-while循环是如何工作的,但我想要的是从System.in中收集作为int的用户输入,并在他们输入其他数据表单时继续请求有效的int输入。我所拥有的是: 这不起作用有两个原因。首先,如果我输入一个非int值,它会立即崩溃,引发输入不匹配异

  • 我正在编写一个 Java 程序。它应该打印出年终账户余额,今年投资,年度回报和年度数量。前任: 第一年-投资10000美元,投资额为10%,最终投资额为11000美元第二年-在现有11000美元的基础上再投资10000美元,现在你有21000美元,年回报率为2100美元,最终投资额为23100美元,持续投资6年。 我的代码打印了所有6年,但与第一年的值相同。循环有什么问题吗?非常感谢。这里我的代码

  • 我正在努力解决FreeCodeCamp的一个挑战。但我正在尝试以更实用的方式编写代码。因此,挑战是求所有小于或等于给定数字的奇数斐波那契数的和。我试图避免for循环,并尝试使用本主题中公认的答案:如何在不进行尾部调用优化的情况下,用函数式编程替代while循环? 但我不明白为什么这不起作用。我错过了什么?我对这一点很陌生,如果答案太简单,我很抱歉。