2017-04-09 189 views
1

这是我的第一个问题,所以请耐心等待:-) 我尝试编写非常简单的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; 
    } 
} 

如何更正我的代码以及接下来的步骤?

问候!

+0

你们正在制作互动节目吗?据我所知,你正在产生一个随机问题,然后用户必须输入答案。它是否正确? – CodingNinja

+0

@SerSergious:Id宁愿使用Math.random(),它更易于使用并返回1和0之间的数字 – user7185318

+0

@SerSergious为什么要生成一个char和另一个随机数? – CodingNinja

回答

0

关于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() 

让我知道,如果你是这样的!

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(); 
} 

注:我已经几乎完全重新做你的程序,所以如果您对任何事情有任何疑问,请在下面评论。

+0

我已经完成了,所以程序在你正确的时候继续运行一个新的问题,并且一直给出新的随机问题,直到你弄错了。当你遇到一个错误的时候,程序会说你错了,告诉你答案,并终止它。 – CodingNinja