简单的数学游戏

时间:2017-04-09 08:15:57

标签: java

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

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

问候!

2 个答案:

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

注意:我已经完全重新完成了您的计划,所以如果您对任何操作有任何疑问,请在下方发表评论。