这是我的第一个问题所以请耐心等待:-) 我尝试编写非常简单的Java游戏。首先,我想生成一个像“2 + 2 =”这样的示例任务。比使用用户必须回答结果是什么。接下来我想生成一个char和其他随机数。
2 +2 =(4)如果回答==结果,则生成随机字符数 4 - 1 =(3)如果回答==结果,则生成随机字符数 3 + 5 =(9)
目前我很难接受角色生成。
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random randomNumber = new Random();
int userRandomNumber = randomNumber.nextInt(10) - 1;
int myRandomNumber = randomNumber.nextInt(10) - 1;
int i = giveResult(userRandomNumber, myRandomNumber);
System.out.println(userRandomNumber);
System.out.println(myRandomNumber);
System.out.println(i);
}
public static int giveResult(int userRandomNumber, int myRandomNumber) {
Random randomNumber2 = new Random();
int switchRandomNumber = randomNumber2.nextInt(2);
char operatorRandom = '+';
int result = 0;
switch (switchRandomNumber) {
case 1:
operatorRandom = '+';
result = userRandomNumber + myRandomNumber;
//return result;
break;
case 2:
operatorRandom = '-';
result = userRandomNumber - myRandomNumber;
//return result;
break;
default:
result = 0;
}
return result;
}
}
如何更正我的代码以及接下来的步骤?
问候!
答案 0 :(得分:0)
首先要理解的是它是一个类。因此,根据您的命名惯例,您可能会误解某个类是什么。
将Random视为制造东西的工厂,所以当你在它上面调用.next()时,会弹出一个数字给你。所以它本身不是一个数字,它是一个数字制造商
接下来,您可以在两个函数中使用相同的Random类,只需在它们之外声明它并在开始时初始化它。
所以你可以这样做:
public class Main {
private Random rnd;
public static void main(String[] args) {
rnd = new Random();
' =新的随机()'部分代码称为初始化。当你第一次声明Class" Private Random rnd;"就像你拥有工厂一样,但它实际上是一个空工厂,目前还没有任何部件。
启动课程就像建立工厂,获取所有部件,打开它,并基本上设置它以开始做事
如果您尝试在未初始化的Random类上调用.next(),则会收到错误!
好的,现在随机正常工作,我们如何使用它?好吧,让我们看一下关于随机的微软文档:https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx
哦,很酷,你实际上可以看到下一个有几个版本。
你可以做.next(),或者你可以做.next(数字)你可以做.next(数字,数字)
他们甚至会向您展示不同版本的功能。
接下来,您可以使用字符串插值(用于在字符串中粘贴变量的花哨字)进行打印,通过string.Format()
示例:
Var myString = string.Format("{0}{1}{2}={3}", "1", "+", "2", "3")
这将为您提供字符串" 1 + 2 = 3"
您想知道的下一个技巧是转换。
您可以在大多数对象上调用.toString(),包括整数。还应该注意string.Format将自动调用toString()所有内容,而不需要首先调用.toString()!
因此,您实际上可以使用此代码获得相同的结果。
Var myString = string.Format("{0}{1}{2}={3}", 1, '+', 2, 3)
但是如果你想要字符串,你可以调用:
var myString = myNumber.toString()
请告诉我这是否适合您!
答案 1 :(得分:0)
你使这个程序比实际需要的更复杂。
实现目标的最简单方法(或者至少我认为你的目标是):
public static void main(String[] args) {
Random rand = new Random();
int NumberOfAnswers = addOrSubtract.length;
int pick = rand.nextInt(NumberOfAnswers);
choice = addOrSubtract[pick];
int randomNumber1 = rand.nextInt(10);
int randomNumber2 = rand.nextInt(10);
if (choice == "+") {
answer = randomNumber1 + randomNumber2;
} else {
answer = randomNumber1 - randomNumber2;
}
System.out.println(randomNumber1 + " " + choice + " " + randomNumber2 + " = ");
Scanner input = new Scanner(System.in);
int inputAnswer = input.nextInt();
if (inputAnswer == answer) {
System.out.println("Correct! The answer was: " + answer);
main(null);
} else {
System.out.println("Incorrect. The answer was: " + answer);
System.out.println("Good-Bye!");
System.exit(0);
}
input.close();
}
注意:我已经完全重新完成了您的计划,所以如果您对任何操作有任何疑问,请在下方发表评论。