gpt4 book ai didi

java - 需要帮助结束带有整数用户输入的石头、剪刀、布游戏的 Java 程序的 while 循环

转载 作者:行者123 更新时间:2023-12-02 05:54:04 25 4
gpt4 key购买 nike

我和我的小组决定为 CSIS 1400 的学期末项目编写一个用于石头、剪刀、布游戏的 Java 程序,并且已经编写了大部分内容,但不确定如何终止 while 循环使用整数用户输入。我们希望用户输入 0 并让循环停止。我们尝试使用 do-while 循环,但我们必须在循环之外初始化 pChoice,这会干扰程序的功能。

这是我们目前为止的代码:

package RPS;

import java.util.Scanner;
import java.util.Random;
//import java.io.Console;
public class Game
{

public static void main (String[] args)
{

String username;
String password;

System.out.print ("Username: ");
username = Security.user();

System.out.print ("Password: ");
password = Security.pswd ();

//Console console = System.console ();
//password = new String (console.readPassword ("Password: "));

if ( username.equals (Security.jacobUser ()) && password.equals (Security.jacobPswd ()) ||
username.equals (Security.tuckerUser ()) && password.equals (Security.tuckerPswd ()) ||
username.equals (Security.austinUser ()) && password.equals (Security.austinPswd ()) )
{

Scanner input = new Scanner(System.in);
Random randRoll = new Random();

int choiceArray[] = {1, 2, 3};

System.out.println ("Hello, Welcome to Rock-Paper-Scissors!");
System.out.println ("Here are your choices:");
System.out.printf ("%d for Rock \n", choiceArray[0]);
System.out.printf ("%d for Paper \n", choiceArray[1]);
System.out.printf ("%d for Scissors \n", choiceArray[2]);

String doPlay = "yes";
String dontPlay = "no";
String playChoice;
int choice;

System.out.println ("Do you want to play?");
playChoice = input.nextLine ();

if (playChoice.equals (dontPlay))
{
System.out.println ("Program Terminated");
}

int cChoice;
int pChoice;

int cScore = 0, pScore = 0, tie = 0, rounds = 0;

while (playChoice.equals (doPlay) || Game.done ().equals (dontPlay))
{

System.out.println ("Please make a selection, or use 0 to end the game:");
cChoice = randRoll.nextInt (3) + 1;
pChoice = input.nextInt ();

if (pChoice == choiceArray[0] || pChoice == choiceArray[1] || pChoice == choiceArray[2])
{



if (pChoice == cChoice)
{
System.out.println ("Tie Game!");
System.out.println ();
tie++;
rounds++;
}

else
{
if (cChoice==1 && pChoice==3)
{
System.out.println ("Computer picked Rock!");
System.out.println ("Rock beats Scissors!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}

if (cChoice==1 && pChoice==2)
{
System.out.println ("Computer picked Rock!");
System.out.println ("Paper beats Rock!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==2 && pChoice==3)
{
System.out.println ("Computer picked Paper!");
System.out.println ("Scissors beats Paper!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==2 && pChoice==1)
{
System.out.println ("Computer picked Paper!");
System.out.println ("Paper beats Rock!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}

if (cChoice==3 && pChoice==1)
{
System.out.println ("Computer picked Scissors!");
System.out.println ("Rock beats Scissors!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==3 && pChoice==2)
{
System.out.println ("Computer picked Scissors!");
System.out.println ("Scissors beats Paper!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}
}

System.out.println ("Scores: " + rounds +" rounds:");
System.out.println ("You\tComputer\tTies");
System.out.println (" "+ pScore +"\t " + cScore + "\t\t " + tie);
}
}
}
else
{
System.out.println ("Incorrect Credentials");
}
}
}

所有控制台内容都在注释中,因为 netbeans 在运行时会抛出空指针异常,但它在命令行中工作得很好,我们现在只想继续在 IDE 中工作,直到完成。我们还希望它在 playChoice = dontPlay 时终止。

如有任何帮助,我们将不胜感激,谢谢。

这是我们完成的源代码:

package RPS;

import java.util.Scanner;
import java.util.Random;
import java.io.Console;
public class Game
{

public static void main (String[] args)
{

System.out.println ("Credentials required.");

String username;
String password;

System.out.print ("Username: ");
username = Security.user();

Console console = System.console ();
password = new String (console.readPassword ("Password: "));

if ( username.equals (Security.jacobUser ()) && password.equals (Security.jacobPswd ()) ||
username.equals (Security.tuckerUser ()) && password.equals (Security.tuckerPswd ()) ||
username.equals (Security.austinUser ()) && password.equals (Security.austinPswd ()) )
{

Random randRoll = new Random();
Scanner input = new Scanner (System.in);

int choiceArray[] = {1, 2, 3};

System.out.println ("Hello, Welcome to Rock-Paper-Scissors!");
System.out.println ("Here are your choices:");
System.out.printf ("%d for Rock \n", choiceArray[0]);
System.out.printf ("%d for Paper \n", choiceArray[1]);
System.out.printf ("%d for Scissors \n", choiceArray[2]);

int cChoice;
int pChoice;

int cScore = 0, pScore = 0, tie = 0, rounds = 0;


do
{

System.out.println ("Please make a selection, or use 0 to end the game:");
cChoice = randRoll.nextInt (3) + 1;
pChoice = input.nextInt ();

if (pChoice == choiceArray[0] || pChoice == choiceArray[1] || pChoice == choiceArray[2])
{



if (pChoice == cChoice)
{
System.out.println ("Tie Game!");
System.out.println ();
tie++;
rounds++;
}

else
{
if (cChoice==1 && pChoice==3)
{
System.out.println ("Computer picked Rock!");
System.out.println ("Rock beats Scissors!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}

if (cChoice==1 && pChoice==2)
{
System.out.println ("Computer picked Rock!");
System.out.println ("Paper beats Rock!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==2 && pChoice==3)
{
System.out.println ("Computer picked Paper!");
System.out.println ("Scissors beats Paper!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==2 && pChoice==1)
{
System.out.println ("Computer picked Paper!");
System.out.println ("Paper beats Rock!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}

if (cChoice==3 && pChoice==1)
{
System.out.println ("Computer picked Scissors!");
System.out.println ("Rock beats Scissors!");
System.out.println ("**Player Wins!**");
System.out.println ();
pScore++;
rounds++;
}

if (cChoice==3 && pChoice==2)
{
System.out.println ("Computer picked Scissors!");
System.out.println ("Scissors beats Paper!");
System.out.println ("**Computer Wins!**");
System.out.println ();
cScore++;
rounds++;
}
}
}
}while (pChoice != 0);

System.out.println ("Here are the final standings.");
System.out.println ("Rounds: " + rounds);
System.out.println ("You\tComputer\tTies");
System.out.println (" "+ pScore +"\t " + cScore + "\t\t " + tie);
}
else
{
System.out.println ("Incorrect Credentials");
}
}
}

安全等级:

 /*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package RPS;

import java.util.Scanner;

/**
*
* @author Jacob, Tucker, Austin
*/
public class Security {

public static String user ()
{
Scanner input = new Scanner (System.in);
String username = input.nextLine ();
return username;
}

public static String pswd ()
{
Scanner input = new Scanner (System.in);
String password = input.nextLine ();
return password;
}

public static String jacobUser ()
{
String username = "jacob";
return username;
}

public static String jacobPswd ()
{
String password = "password";
return password;
}

public static String tuckerUser ()
{
String username = "tucker";
return username;
}

public static String tuckerPswd ()
{
String password = "password";
return password;
}

public static String austinUser ()
{
String username = "austin";
return username;
}

public static String austinPswd ()
{
String password = "password";
return password;
}
}

我们现在在使用 javac 时遇到编译错误。详细信息列在下面的评论中。

最佳答案

处理可重复的用户输入时,实现 Do-While 循环几乎始终是最佳方法

    do {

System.out.println ("Please make a selection, or use 0 to end the game:");
cChoice = randRoll.nextInt (3) + 1;
pChoice = input.nextInt ();

if (pChoice == choiceArray[0] || pChoice == choiceArray[1] || pChoice == choiceArray[2])
{
...
// All your normal game stuff
...
}
}while(pChoice != 0)

pChoice 由第一次循环初始化

关于java - 需要帮助结束带有整数用户输入的石头、剪刀、布游戏的 Java 程序的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com