【发布时间】:2015-01-10 13:33:14
【问题描述】:
我试图从用户那里接受一个 1 到 300 范围内的数字,然后生成输入的随机数的数量。然后,如果生成的数字在 1 到 10 的范围内,我在字符串中添加一个星号,然后我对 11 到 20 等执行相同操作,一直到 100。尽管我不断收到错误说“;预期”在我的代码的结果部分。我想要实现的输出是:
1 到 10 ****************
11 到 20 ******
21 到 30 ***************
31 到 40 ********************
41 到 50
51 到 60 ***********
61 到 70 ****************
71 到 80 ****
81 到 90 *******
91 到 100 **
上面的星号加起来可能不等于 100,但我试图在输出中显示 100 个星号,每个星号代表 __ 到 __ 范围内的随机生成数。
我的代码如下。
import java.util.*;
public class histogramAsterisks
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter a number between the range 1 to 300: ");
int input = Integer.parseInt(in.nextLine());
int aNumber;
String 1to10 = "", 11to20 = "", 21to30= "", 31to40 = "", 41to50 = ""; 51to50 = ""; 61to70 = ""; 71to80 = ""; 81to90 = ""; 91to100 = "", results = "";
if(input < 1 || input > 300 || input == null)
results = "Please enter a valid input in the range 1 to 300.";
else
{
for(int i = 0; i < input; i++)
{
aNumber = (int) (Math.random() * 100 + 1);
if(aNumber <= 10) 1to10 += "*";
else if(aNumber <= 20) 11to20 += "*";
else if(aNumber <= 30) 21to30 += "*";
else if(aNumber <= 40) 31to40 += "*";
else if(aNumber <= 50) 41to50 += "*";
else if(aNumber <= 60) 51to60 += "*";
else if(aNumber <= 70) 61to70 += "*";
else if(aNumber <= 80) 71to80 += "*";
else if(aNumber <= 90) 81to90 += "*";
else 91to100 += "*";
}
}
results = "1 to 10\t\t\t" + 1to10;
results += "\n11 to 20\t\t\t" + 11to20;
results += "\n21 to 30\t\t\t" + 21to30;
results += "\n31 to 40\t\t\t" + 31to40;
results += "\n41 to 50\t\t\t" + 41to50;
results += "\n51 to 60\t\t\t" + 51to60;
results += "\n61 to 70\t\t\t" + 61to70;
results += "\n71 to 80\t\t\t" + 71to80;
results += "\n81 to 90\t\t\t" + 81to90;
results += "\n91 to 100\t\t\t" + 91to100;
System.out.println(results);
}
}
【问题讨论】:
-
如果您的范围是从 1 到 100000 而不是 1 到 100,您会使用 1to10、11to20、...、99991 到 100000 吗?想想你如何在这个问题中使用数组,这样你就不需要为
if else
标签: java loops if-statement random output