如何在java中正确格式化或合并两个直方图?
我有一个代码,可以打印出一些骰子的滚动直方图。我的问题是,我想在第二个柱状图旁边打印第一个柱状图,目前我的输出是这样的,但我想把星星放在滚动次数的右侧,如:2:3次///3:1次/等等如何在java中正确格式化或合并两个直方图?,java,format,Java,Format,我有一个代码,可以打印出一些骰子的滚动直方图。我的问题是,我想在第二个柱状图旁边打印第一个柱状图,目前我的输出是这样的,但我想把星星放在滚动次数的右侧,如:2:3次///3:1次/等等 public static void main(String[] args) { // TODO code application logic here System.out.print("Please enter how many times to roll the dice:
public static void main(String[] args) {
// TODO code application logic here
System.out.print("Please enter how many times to roll the dice: ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] rolls = new int[n];
Random r1 = new Random();
Random r2 = new Random();
int dice1;
int dice2;
int [] t = new int [13];
for (int roll=0; roll < rolls.length; roll++)
{
dice1 = r1.nextInt(6)+1;
dice2 = r2.nextInt(6)+1;
System.out.println(roll + " : I rolled a " + dice1 + " and a " + dice2);
int sum;
sum = dice1 + dice2;
if (sum == 2)
t[0]++;
if (sum == 3)
t[1]++;
if (sum == 4)
t[2]++;
if (sum == 5)
t[3]++;
if (sum == 6)
t[4]++;
if (sum == 7)
t[5]++;
if (sum == 8)
t[6]++;
if (sum == 9)
t[7]++;
if (sum == 10)
t[8]++;
if (sum == 11)
t[9]++;
if (sum == 12)
t[10]++;
}
System.out.println("Histogram of rolls:" );
String star ="*";
int [] h= {t[0], t[1],t[2], t[3],t[4], t[5], t[6], t[7],t[8], t[9],t[10]};
for (int i=0; i <h.length; i++)
{
for(int j = 0; j < h[i]; j++)
System.out.print( star);
System.out.println();
}
System.out.println("Histogram of rolls:" );
System.out.println( "2 : " + t[0] + " times");
System.out.println("3 : " + t[1] + " times");
System.out.println("4 : " + t[2] + " times");
System.out.println("5 : " + t[3] + " times");
System.out.println("6 : " + t[4] + " times");
System.out.println("7 : " + t[5] + " times");
System.out.println("8 : " + t[6] + " times");
System.out.println("9 : " + t[7] + " times");
System.out.println("10 : " + t[8] + " times");
System.out.println("11 : " + t[9] + " times");
System.out.println("12 : " + t[10] + " times");
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
System.out.print(“请输入掷骰子的次数:”);
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
int[]滚动=新的int[n];
Random r1=新的Random();
随机r2=新随机();
int-1;
int-2;
int[]t=新的int[13];
对于(int roll=0;roll 对于(int i=0;i将代码的最后一部分更改为:
...
System.out.println("Histogram of rolls:" );
String star ="*";
// No point in using "int [] h"
for (int i=0; i < t.length; i++) {
// Placing the logic for printing the text inside the loop
// is how you use arrays
System.out.print( (i+2) + " : " + t[0] + " times");
for(int j = 0; j < t[i]; j++) {
System.out.print(star);
}
System.out.println();
}
}
可简化为:
t[sum-2]++;
建议:
1) 您根本不需要数组h[]
2) 您需要在同一个循环中同时打印直方图的每一行(“***”)和“直方图卷数”的每一行
3) 我将创建一个变量,“String asterisks=“*************”;
并使用子字符串打印正确数量的星号。()副本,而不是“for(…)”循环
附言:
subString()是我在您的
t[sum-2]++;