我需要一些帮助来完成类作业。我不想得到解决方案,而是想了解如何解决这个问题,因为即使它很简单,我也真的不明白。
我需要编写一个包含 10 个元素(全部为整数)的数组的程序。每个元素都会设置一个随机生成的数字,每个数字都在 0-20 之间。接下来,我必须打印数组元素的位置、随机数和与数组值一样多的星号。
它看起来像这样:
Array Value Asterisks
0 5 *****
1 15 ***************
我可以生成数字并将它们存储到数组中,但我无法根据描述打印它们。你能告诉我我做错了什么吗?
public class ForTest{
public static void main(String[] args) {
//Method 1
int[] myNumbers = {0,1,2,3,4,5,6,7,8,9};
//Method 2
int[] randomNumbers = new int[10];
String asterisk = "";
for( int index=0; index < randomNumbers.length; index++)
{
randomNumbers[index] = 1 + (int) ( Math.random() *20);
} // end for
for ( int index=0; index < randomNumbers.length; index++)
{
switch (randomNumbers[index]) {
case 1:
asterisk = "*";
System.out.println(myNumbers[0] + "\t-->\t" + randomNumbers + asterisk);
break;
case 2:
asterisk = "**";
System.out.println(myNumbers[1] + "\t-->\t" + randomNumbers + asterisk);
break;
case 3:
asterisk = "***";
System.out.println(myNumbers[2] + "\t-->\t" + randomNumbers + asterisk);
break;
case 4:
asterisk = "****";
System.out.println(myNumbers[3] + "\t-->\t" + randomNumbers + asterisk);
break;
}
}
}
}
最佳答案
1) 让我们从解决作业所需的最少代码开始: 这是一个包含 10 个随机数的数组。我只是复制了你已有的
public static void main(String [] args) {
int[] randomNumbers = new int[10];
for( int index=0; index < randomNumbers.length; index++){
randomNumbers[index] = 1 + (int) ( Math.random() *20);
}
}
您不需要名为 myNumbers 的第二个数组;您可以改用 randomNumbers 数组的索引
2) 现在让我们进行下一步并尝试打印索引。
public static void main(String [] args) {
int[] randomNumbers = new int[10];
for( int index=0; index < randomNumbers.length; index++){
randomNumbers[index] = 1 + (int) ( Math.random() *20);
}
for ( int index=0; index < randomNumbers.length; index++){
System.out.println(index);
}
}
这将输出
0
1
2
...
3)如果你现在将指定索引处的元素添加到打印语句中,你就完成了一半
public static void main(String [] args) {
int[] randomNumbers = new int[10];
for( int index=0; index < randomNumbers.length; index++){
randomNumbers[index] = 1 + (int) ( Math.random() *20);
}
for ( int index=0; index < randomNumbers.length; index++){
System.out.println(index + "\t" + randomNumbers[index]);
}
}
输出
0 4
1 8
2 7
....
4) 我想您已经知道 System.out.println()
和 System.out.print()
之间的区别。如果不是谷歌是你的 friend 。要打印星号,您可以在最后一个循环中添加另一个 for 循环而不是 switch block
public static void main(String [] args) {
int[] randomNumbers = new int[10];
for( int index=0; index < randomNumbers.length; index++){
randomNumbers[index] = 1 + (int) ( Math.random() *20);
}
for ( int index=0; index < randomNumbers.length; index++){
System.out.println(index +"\t"+randomNumbers[index]+"\t");
for ( int x=1; x <= randomNumbers[index]; x++){
System.out.print("*");
}
}
}
这将产生
0 4
****1 11
***********2 15
***************3 8
...
5) 不完全是您需要的,但非常接近。 println() 在打印到新行后跳转,而 print() 停留在同一行。要解决此问题,请使用 print() 打印包含随机数和星号的行,并在内部 for 循环之后跳转到带有空 println() 的新行
public static void main(String [] args) {
int[] randomNumbers = new int[10];
for( int index=0; index < randomNumbers.length; index++){
randomNumbers[index] = 1 + (int) ( Math.random() *20);
}
for ( int index=0; index < randomNumbers.length; index++){
System.out.print(index +"\t"+randomNumbers[index]+"\t");
for ( int x=1; x <= randomNumbers[index]; x++){
System.out.print("*");
}
System.out.println();
}
}
关于Java作业: Print Arrays with stored random numbers in it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678127/