初学者Java程序,循环
我试图创建一个简单的程序,创建一个随机数,并要求用户猜测。然后它会说更高或更低,直到用户猜对为止。问题是,在用户正确猜测后,程序将继续循环。我认为将代码放在一个单独的方法中,然后在while循环中调用它是可行的,但不幸的是,没有用。谁能建议我如何纠正这一点 下面是我的代码初学者Java程序,循环,java,loops,Java,Loops,我试图创建一个简单的程序,创建一个随机数,并要求用户猜测。然后它会说更高或更低,直到用户猜对为止。问题是,在用户正确猜测后,程序将继续循环。我认为将代码放在一个单独的方法中,然后在while循环中调用它是可行的,但不幸的是,没有用。谁能建议我如何纠正这一点 下面是我的代码 package main; public class NumberGuesser { public static void main(String[] args) { code mycode = n
package main;
public class NumberGuesser {
public static void main(String[] args) {
code mycode = new code();
while (mycode.guess != mycode.random){
mycode.codebit();
}
}
}
package main;
import java.util.Random;
import java.util.Scanner;
public class code {
Random rand = new Random();
int random = rand.nextInt(1000);
double guess;
public void codebit(){
System.out.println("Guess the number");
Scanner input = new Scanner(System.in);
Double guess = input.nextDouble();
if (guess > random){
System.out.println("Lower");
}
else if (guess < random){
System.out.println("Higher");
}
else if (guess == random){
System.out.println("Well done");
}
}
}
您正在方法体中声明guess,这将隐藏您的实例成员。
尝试删除:
Double guess = input.nextDouble();
。。。并替换为:
guess = input.nextDouble();
也与您的问题无关:
按照一般的编码准则,类名应该是大写的
您不需要每次都实例化扫描仪。如果您尝试您的代码结构,您将能够有更有效的使用。只是一个提示,试着寻找hasNext[…]的方法。
您正在方法体中声明guess,这将隐藏您的实例成员。
尝试删除:
Double guess = input.nextDouble();
。。。并替换为:
guess = input.nextDouble();
也与您的问题无关:
按照一般的编码准则,类名应该是大写的
您不需要每次都实例化扫描仪。如果您尝试您的代码结构,您将能够有更有效的使用。只是一个提示,试着寻找hasNext[…]的方法。
您正在初始化一个与此处字段同名的局部变量。由主类检查的字段永远不会被修改。还有,为什么要用double而不是int来表示猜测
您正在初始化一个与此处字段同名的局部变量。由主类检查的字段永远不会被修改。还有,为什么要使用double而不是int来进行猜测呢?我认为这里不必使用单独的方法。只需将代码类中的代码放入主方法的无限循环中。这样,当猜测正确时,您可以通过返回来停止程序:
else if (guess == random) {
System.out.println("Well done");
return;
}
我想你不必在这里讨论一个单独的方法。只需将代码类中的代码放入主方法的无限循环中。这样,当猜测正确时,您可以通过返回来停止程序:
else if (guess == random) {
System.out.println("Well done");
return;
}
您的全局值猜测永远不会被赋值,除非它首先从系统中赋值为0作为全局变量。
这是因为您声明了一个局部变量,并且每次都将局部变量而不是全局变量指定为默认java属性。
删除局部变量guess的声明可以解决这个问题。您可以通过其他方式来解决此问题,如使用此函数分配全局值和局部值。guess=guess。您的全局值guess永远不会被分配值,除非它首先从系统中分配一个0的值作为全局变量。
这是因为您声明了一个局部变量,并且每次都将局部变量而不是全局变量指定为默认java属性。
删除局部变量guess的声明可以解决这个问题。您可以通过其他方式解决这个问题,比如使用this.guess=guess分配全局和局部。我对Java也很陌生,但我会保持简单,并这样做:
package main;
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
Random rand = new Random();
Scanner input = new Scanner(System.in);
int guess;
int randomNum;
String answer = "";
System.out.println("~ WELCOME! ~");
System.out.println("Can you guess the secret number?");
do {
System.out.print("\nPicking a number between 1-1000........ ");
randomNum = rand.nextInt(1000)+1; //number will be between 1-1000
System.out.println("Done!");
System.out.print("\nGuess the number: ");
guess = input.nextInt();
while(guess<1 || guess>1000) {
System.out.println("\nOut of range! Try again.");
System.out.print("Your guess: ");
guess = input.nextInt();
}
if(guess==randomNum)
System.out.print("You were right!");
else
System.out.println("\nWrong! Better luck next time.");
System.out.println("\nThe secret number was " + randomNum + ".");
System.out.println("Your guess was " + guess + ".");
System.out.print("\nPlay again (yes/no)? ");
answer = input.next();
if(answer.equalsIgnoreCase("no")) {
System.out.print("\nThanks for playing!");
input.close();
System.exit(0);
}
}while(answer.equalsIgnoreCase("yes"));
}
}
我认为没有必要再创建一个类。试试看,看看你是怎么想的 我对Java也很陌生,但我会保持它的简单性,并这样做:
package main;
import java.util.Random;
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
Random rand = new Random();
Scanner input = new Scanner(System.in);
int guess;
int randomNum;
String answer = "";
System.out.println("~ WELCOME! ~");
System.out.println("Can you guess the secret number?");
do {
System.out.print("\nPicking a number between 1-1000........ ");
randomNum = rand.nextInt(1000)+1; //number will be between 1-1000
System.out.println("Done!");
System.out.print("\nGuess the number: ");
guess = input.nextInt();
while(guess<1 || guess>1000) {
System.out.println("\nOut of range! Try again.");
System.out.print("Your guess: ");
guess = input.nextInt();
}
if(guess==randomNum)
System.out.print("You were right!");
else
System.out.println("\nWrong! Better luck next time.");
System.out.println("\nThe secret number was " + randomNum + ".");
System.out.println("Your guess was " + guess + ".");
System.out.print("\nPlay again (yes/no)? ");
answer = input.next();
if(answer.equalsIgnoreCase("no")) {
System.out.print("\nThanks for playing!");
input.close();
System.exit(0);
}
}while(answer.equalsIgnoreCase("yes"));
}
}
我认为没有必要再创建一个类。试试看,看看你是怎么想的 不管怎样,欢迎使用编程:@KevinWorkman MVC对于初学者来说有点过分了@Fabinout我很欣赏这些反馈,虽然我同意严格的MVC对于新手来说太难了的一般观点,但教程在进入Java之前通过处理引入OOP。我把它贴在这里是因为即使OP不了解所有内容,他也希望看到程序的基本流程,这正是他在这里感到困惑的地方。无论如何欢迎来到编程:@KevinWorkman MVC对于一个完全初学者来说有点过火@Fabinout我很欣赏这些反馈,虽然我同意严格的MVC对于新手来说太难了的一般观点,但教程在进入Java之前通过处理引入OOP。我把它贴在这里是因为即使OP不了解所有内容,他也希望看到程序的基本流程,这是他在这里所困惑的。这完美地修复了程序。真没想到这么简单!非常感谢你的帮助这完美地修复了程序。真没想到这么简单!非常感谢你的帮助