如何询问5个不同的数字然后回答它?

时间:2017-03-17 15:14:04

标签: java random

import java.util.*;

public class Testing {

    public static void main(String[] args) {

        Random rand = new Random();
        int random = (int)(Math.random() * 3 + 1);

        //to see what number to guess
        System.out.println(random);

        int score = 0;
        Scanner input = new Scanner(System.in);
        System.out.print("Enter Number: ");
        String num = input.nextLine();
        int count = 0;

        while (count <= 5) {
            if (random == 1) {
                if (num.equals("one")) {
                    System.out.println("correct");
                    score++;
                }
                else {
                    System.out.print("Wrong!");
                }
            }
            else if (random == 2) {
                if (num.equals("two")) {
                    System.out.println("correct");
                    score++;
                }
                else {

                    System.out.print("Wrong!");
                }
            }
            else {
                if (num.equals("three")) {
                    System.out.println("correct");
                    score++;
                }
                else {
                    System.out.print("Wrong!");
                }
            }
            count++;
        }
        System.out.println(score);
    }
}

如何制作会询问5个不同的随机数?

在每次好的猜测之后,分数应该增加1。

在每次猜测(好的或坏的)之后,它应该进入另一个随机数?

2 个答案:

答案 0 :(得分:0)

要从用户那里读取5个数字,请编写如下代码

public Integer [] read5NumbersFromConsole(Scanner input){
    Integer [] inputNumber = new Integer [5];   
  for(int i =0; i< 5; i++){
     System.out.print("Enter Number: ");
        inputNumber[i] = input.nextInt();

   }
return inputNumber;
}

其余的我留给你实施......

答案 1 :(得分:0)

很奇怪您分配了一个Random类来不使用它。

你应该使用它,然后写rand.nextInt(3 + 1)(不包括+1,而不是(int)(Math.random() * 3 + 1)

你的while循环可以通过for循环简化:for (int count = 0; count < 5; ++count)。注意,将变量初始化为 0 并转到 <= 5 将导致 6 次迭代,而不是5次。< / p>

在你的情况下你不需要创建一个包含5个数字的数组,你可以在循环中为每个猜测生成一个新的随机数。

您还可以使用1 to "one", 2 to "two", etc.

等地图减少代码中的冗余

最后,我会这样写:

import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;

public class Testing {

    public static void main(String[] args) {
        int score = 0;
        Random rand = new Random();
        Scanner input = new Scanner(System.in);

        HashMap<Integer, String> intToString = new HashMap<>();

        intToString.put(1, "one");
        intToString.put(2, "two");
        intToString.put(3, "three");

        for (int count = 0; count < 5; ++count) {
            // "nextInt" is exclusive! Doing +1 converts [0;2] to [1;3]
            int random = rand.nextInt(3 + 1);

            // To see what number to guess
            System.out.println(random);

            String num = input.nextLine();

            // Get the string representation
            String response = intToString.get(random);

            if (num.equals(response)) {
                System.out.println("correct");
                ++score;
            } else {
                System.out.println("Wrong!");
            }
        }

        System.out.println(score);
    }
}

如果您使用的是Java 1.7+,则可以使用ThreadLocalRandom.current()而不是RandomRelated post here