繁体   English   中英

我在随机数猜测游戏中遇到了while循环

[英]I'm stuck with while loop on my random number guessing game

希望它循环遍历所有内容,直到用户输入正确的数字。 当用户输错号码时,应说“输入不同的号码”。 当用户输入正确的号码时,应该说“祝贺你赢了”。 但在那之前它会循环并说出“键入不同的数字”,经过5次尝试后我想说“你没能完成这个任务!你想再试一次吗?”

如果他们猜测1,他们会给500美元,第二次尝试400美元等等,直到5次尝试。

import javax.swing.*;
import java.util.Random;

public class Projekt_1 {

    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "WELCOME TO GUESS GAME!" + "\nYou gonna guess a number between 1 and 20 " + "\nYou have  5 tries to guess the number! " + "\nYou gonna get more money on less tries, highest win are 500 dollar on one try! " + "\nHOPE YOU LIKE IT :)");

        Random talet = new Random();
        int secretnumber = talet.nextInt(20) + 1;
        int tries = 0;
        int money = 600;
        String number;

        int guess;
        boolean win = false;

        while (win == false) {
            number = JOptionPane.showInputDialog("Guess a number between 1 and 20");
            guess = Integer.parseInt(number);
            tries++;

            if (guess == secretnumber) {
                win = true;
            } else if (guess > secretnumber) {
                JOptionPane.showInputDialog("Your number is to low :(" + "\nType in a higher number!");
                guess = Integer.parseInt(number);
            } else if (guess < secretnumber) {
                JOptionPane.showInputDialog("Your number is to high :(" + "\nType ina a lower number!");
                guess= Integer.parseInt(number);
            }
        }

        JOptionPane.showMessageDialog(null, "Congrats you won!" + "\nYour number was " + secretnumber + "\nit took you " + tries + "tries");
    }
}   

while循环中添加附加条件将起作用。 如果försök是最大值为5的尝试次数(在您的情况下),则条件应为:

while (win == false && försök<5) //if försök starts from 0 
{
   //code
   if(win==true)
   break;
   försök++;
}

要显示消息和分数,您可以在while循环后检查försök的值:

if(försök==5)
{
      // display this message: "you failed this mission! do you want to try again?" 
     score=0;
}
else
{
     //display: "congrats you won"
      score=(5-försök)*100;
}

基本上你的代码应该是这样的:

import javax.swing.*;
import java.util.Random;

class Projekt_1
{
public static void main(String[] args) {
        final int maxTries = 5;
        JOptionPane.showMessageDialog(null, "Welcome... " + maxTries + " tries ... 500 krones ");

        final Random rnd = new Random();
        final int hemligtnummer = rnd.nextInt(20) + 1;
        int tryCounter = 0;
        final int pengar = 500;
        String nummer;

        int guess = -1;

        while (guess != hemligtnummer && tryCounter < maxTries) {
            if(tryCounter==0)
            nummer = JOptionPane.showInputDialog("...a number 1 and 20");
            else
            nummer = JOptionPane.showInputDialog("Enter no...");
            guess = Integer.parseInt(nummer);
            if (guess == hemligtnummer) {
                break;
            } else if (guess > hemligtnummer) {
                JOptionPane.showMessageDialog(null, "Try " + (tryCounter+1) + " was too big try a smaller one");
            } else if (guess < hemligtnummer) {
                JOptionPane.showMessageDialog(null, "Try " + (tryCounter+1) + " too small try a bigger one");
            }
            tryCounter++;
        }
        if(tryCounter==5){
            JOptionPane.showMessageDialog(null,"Grattis du vann!" + "\nteh number was " + hemligtnummer + "\nDet tog dig " + tryCounter + " försök");
            JOptionPane.showMessageDialog(null, "Your price is :" + (pengar - tryCounter * 100) + " Krones");
        }
        else
        {
            JOptionPane.showMessageDialog(null,"congrats you won"+"Your price is :" + (pengar - tryCounter * 100) + " Krones" );
        }
    }
}

你可以在循环时控制中断。 当尝试次数超过5次或输入正确数字时将被打破。
请参阅以下内容以供参考

Scanner s = new Scanner(System.in);
        int numOfTries = 0;
        int input;
        int correctNumn = 15;

        while (true) {

            input = s.nextInt();
            if (input != correctNumn && numOfTries <= 5) {

                numOfTries++;
                if (numOfTries == 5) {
                    System.out.println("Game Over");
                    break;
                }

                continue;
            } else if (input == correctNumn) {
                System.out.println("corect ans");
                break;
            }

        }

如果你用你的母语发布所有内容真的很难帮助你......但这是我的回答......

您的代码的问题是在洞穴logi中,您从不使用变量尝试(försök)并且如果用户猜错了数字,那么您再次阅读尝试但是您应该再次启动while的逻辑....

无论如何....

例:

public static void main(String[] args) {
        final int maxTries = 5;
        JOptionPane.showMessageDialog(null, "Welcome... " + maxTries + " tries ... 500 krones ");

        final Random rnd = new Random();
        final int hemligtnummer = rnd.nextInt(20) + 1;
        int tryCounter = 0;
        final int pengar = 600;
        String nummer;

        int guess = -1;

        while (guess != hemligtnummer && tryCounter < maxTries) {
            nummer = JOptionPane.showInputDialog("...a number 1 and 20");
            guess = Integer.parseInt(nummer);
            tryCounter++;

            if (guess == hemligtnummer) {
                break;
            } else if (guess > hemligtnummer) {
                JOptionPane.showMessageDialog(null, "Try " + tryCounter + " was too big try a smaller one");
            } else if (guess < hemligtnummer) {
                JOptionPane.showMessageDialog(null, "Try " + tryCounter + "too small try a bigger one");
            }
        }
        JOptionPane.showMessageDialog(null,
                "Grattis du vann!" + "\nteh number was " + hemligtnummer + "\nDet tog dig " + tryCounter + " försök");
        JOptionPane.showMessageDialog(null, "Your price is :" + (pengar - tryCounter * 100) + " Krones");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM