对于学校作业,我需要使用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?
}
}
答案 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
方法来获取随机数。一种折皱是它返回的数字介于0
和n-1
之间,因此您需要在返回的值上加上1,如:
int roll = 1 + rand.nextInt(6);
对于打印面,我将以这种方式定义每个面,例如5:
String f5 = "x x\n x \nx x";
然后使用x
将ch
替换为所选的字符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
)。
以下是如何将x
与printf
一起使用以显示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
时终止该程序