如何将math.random()与输入字符一起使用?

时间:2018-09-28 13:18:44

标签: java

对于学校作业,我需要使用do / while / for循环(最适合)并随机掷骰子。该程序一旦抛出6就停止。但是输出需要看起来像我给的输入字符。我知道我需要使用system.out.printf格式化输出。一旦骰子抛出6个字符,它就会停止。如果有人可以解释方式和原因,那太好了,以便我下次可以学习。

这是示例输出:

# #
 #
# #

# #
 #
# #

#
 #
  #

# #
# #
# #

我到目前为止拥有的代码(也在尝试中):

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("What character do you want to use: ");

        String character = input.nextLine();

        char character2 = character.charAt(0);

        do{
            //math random probably needs to be put here?

            System.out.printf("%1s %2s\n",character2, character2); //formatting of output, not yet finished


        } while();
        //not sure if do while is better in this situation. For loops possible too?

    }
}

3 个答案:

答案 0 :(得分:2)

这是您需要遵循的基本流程:

do
  roll = random number between 1 and 6
  print the face of dice showing value of roll using selected character
while roll not 6

在Java中,您可以使用nextInt(n)类的Random方法来获取随机数。一种折皱是它返回的数字介于0n-1之间,因此您需要在返回的值上加上1,如:

int roll = 1 + rand.nextInt(6);

对于打印面,我将以这种方式定义每个面,例如5:

String f5 = "x x\n x \nx x";

然后使用xch替换为所选的字符f5.replace('x', ch)

您甚至可以使用数组来保存面孔,如:

String[] faces = new String[6];
faces[0] = "  \n x \n   ";
<snip>
faces[6] = "x x\nx x\nx x";

然后您可以在循环中执行以下操作:

System.out.println(faces[roll-1].replace('x', ch));

答案 1 :(得分:0)

要将Math.random()转换为下模辊,将其乘以可能性数,添加最低的可能性,然后转换为int。死亡有六种可能性。最小的可能性是1。因此我们得到:

(int) (Math.random()*6 + 1)

因此,您的循环应如下所示:

int roll;
do {
    roll = (int) (Math.random()*6 + 1);

    // Display die
} while (roll != 6);

现在我们如何显示带有用户给定角色的骰子?您提到使用printf。对于printf%c是字符的格式字符串。 1$表示使用第一个参数。 %1$c会一遍又一遍地打印第一个参数(应该是char)。

以下是如何将xprintf一起使用以显示6的一卷:

System.out.printf("%1$c %1$c\n%1$c %1$c\n%1$c %1$c\n", 'x');

所以您的循环看起来像这样:

int roll;
do {
    roll = (int) (Math.random()*6 + 1);

    switch (roll) {
        case 1: // printf a 1
                break;
        case 2: // printf a 2
                break;
        case 3: // printf a 3
                break;
        case 4: // printf a 4
                break;
        case 5: // printf a 5
                break;
        case 6: System.out.printf("%1$c %1$c\n%1$c %1$c\n%1$c %1$c\n", character2);
                break;
    }
} while (roll != 6);

答案 2 :(得分:0)

您可以将其用作输出,否则,只需获取Math.Random();创建的随机数即可。

if (YOURRANDOMNUMBER== 1) {
    System.out.println("* * * * *");
    System.out.println("*       *");
    System.out.println("*   #   *");
    System.out.println("*       *");
    System.out.println("* * * * *");
}

if (YOURRANDOMNUMBER== 2) {
    System.out.println("* * * * *");
    System.out.println("*    #  *");
    System.out.println("*       *");
    System.out.println("*  #    *");
    System.out.println("* * * * *");
}
if (YOURRANDOMNUMBER== 3) {

    System.out.println("* * * * *");
    System.out.println("*    #  *");
    System.out.println("*   #   *");
    System.out.println("*  #    *");
    System.out.println("* * * * *");
}

if (YOURRANDOMNUMBER== 4) {
    System.out.println("* * * * *");
    System.out.println("*  # #  *");
    System.out.println("*       *");
    System.out.println("*  # #  *");
    System.out.println("* * * * *");
}

if (YOURRANDOMNUMBER== 5) {

    System.out.println("* * * * *");
    System.out.println("*  # #  *");
    System.out.println("*   #   *");
    System.out.println("*  # #  *");
    System.out.println("* * * * *");
}
if (YOURRANDOMNUMBER== 6) {

    System.out.println("* * * * *");
    System.out.println("*  # #  *");
    System.out.println("*  # #  *");
    System.out.println("*  # #  *");
    System.out.println("* * * * *");
    System.exit(0);
    }

它在您进入YOURRANDOMNUMBER== 6时终止该程序