简单的数学游戏
这是我的第一个问题,所以请耐心等待:-) 我尝试编写非常简单的Java游戏。首先,我想生成一个样例任务,如“2 + 2 =”。比使用用户必须回答结果是什么。接下来我想生成一个char和其他随机数。简单的数学游戏
2 2 =(4)如果答案==结果,不是生成随机炭NAD数 4 - 1 =(3)如果答案==结果,不是生成随机炭NAD数 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;
}
}
如何更正我的代码以及接下来的步骤?
问候!
关于Random的第一件事是理解它是一个Class。所以我从你的命名规则看你可能会误解一个班级。
考虑随机就像一个制造东西的工厂,所以当你调用.next()时,它会为你弹出一个数字。因此,它本身不是一个数字,它的一些制造商
接下来,你可以只是它声明他们之外,并在启动初始化它实际上使用您的两个功能相同的随机类。
所以,你可以做这样的事情开始:
public class Main {
private Random rnd;
public static void main(String[] args) {
rnd = new Random();
的“=新的随机()”代码的一部分被称为初始化。当你首次声明类“Private Random rnd”时这就像你有工厂,但它现在实际上是一个空的工厂,现在还没有任何零件。
Initiliazing一类是像建设的工厂,获取其所有部件,将其打开,基本上设置它开始做的东西
如果试图在未初始化的Random类调用的.next() ,你会得到一个错误!
好吧,现在随机工作,我们如何使用它?那么让我们来看看微软关于Random的文档:https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx
哦,很酷,你可以看到下面有几个版本。
你可以做的.next(),或者你可以做的.next(号码),你可以做。接下来(数字,数字)
他们甚至告诉你什么不同的版本做。
接下来,您可以使用字符串插值(用于粘贴字符串变量的花式词)来打印字符串。格式()
例子:
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()
让我知道,如果你是这样的!
你已经使这个程序比它真正需要更复杂。
实现你的目标是什么,最简单的方法(或者至少是我认为你正在瞄准)是这样的:
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();
}
注:我已经几乎完全重新做你的程序,所以如果您对任何事情有任何疑问,请在下面评论。
我已经完成了,所以程序在你正确的时候继续运行一个新的问题,并且一直给出新的随机问题,直到你弄错了。当你遇到一个错误的时候,程序会说你错了,告诉你答案,并终止它。 – CodingNinja
你们正在制作互动节目吗?据我所知,你正在产生一个随机问题,然后用户必须输入答案。它是否正确? – CodingNinja
@SerSergious:Id宁愿使用Math.random(),它更易于使用并返回1和0之间的数字 – user7185318
@SerSergious为什么要生成一个char和另一个随机数? – CodingNinja