我是Java的新手,我得到了一些练习。知道如何解决这个小问题吗?
到目前为止,这是我前两部分所得到的,但我似乎没有工作,请帮助,抱歉这些愚蠢的问题...
package randomhundred;
import java.text.DecimalFormat;
public class RandomHundred {
public static void main(String[] args) {
//setting the 100 array
int rand [] = new int [100];
double numb;
DecimalFormat dec = new DecimalFormat("0");
for(int i=0; i<rand.length; i++){
numb = Math.random() * ( 500 - 100 );
}
}
public static int arai (){
return System.out.print(" " + dec.format(numb) + " ");
}
}
答案 0 :(得分:1)
让步骤1正确....生成100个随机值。
你的过程几乎就在那里......但是:
int
值,因此您无法将其存储在int[]
数组中。500
。要将随机数转换为整数,请尝试以下操作:
int numb;
....
numb = (int)(Math.random() * ( 500 - 100 ));
但是,这不会生成值500(因为500 - 100是400,但实际上需要生成401个数字....),所以将其更改为(参见How do I generate random integers within a specific range in Java?):< / p>
numb = 100 + (int)(Math.random() * ( (500 - 100) + 1))
现在我们有100到500(含)之间的随机数,你现在需要将它们存储在你的数组中:
rand[i] = numb;
一旦你有了工作,回来我们就可以解决其他问题。
直到那时,你可以打印出你的数组:
System.out.println(Arrays.toString(rand)); // Arrays is java.util.Arrays
答案 1 :(得分:0)
我会尝试为您的问题提供一些伪代码:
// Task 1
Declare array of 100 ints (I will relate to 100 later on with n).
Fill array with random integers between 100 and 500 including borders
提示代码:100 + new Random().nextInt(401)
,401作为上限是独占的,它产生最大结果:100 + 400 - &gt; 500和最小值:100 + 0 = 100.即使这将产生100个数字,如果你将随机实例存储在某处并重新使用它会更快,但这是一个优化步骤。
// Task 2
for i = 0; i < n; i++
print integer from array
add space
if i is divisible by 5 then
add new line
end-if
end-for
//Task 3
declare a min of the maximum value which is possible: in this case your maximum random number of 500
loop through the list checking for smaller numbers
after loop has finished print the last number
我希望这很清楚,你可以了解如何做到这一点。
答案 2 :(得分:0)
广告。 1 为了完整起见(其他人已经解释过):
for(int i=0; i<rand.length; i++){
rand[i] = 100 + (int)(Math.random() * ( 401 ));
}
广告。 2 这是错的:
public static int arai (){
return System.out.print(" " + dec.format(numb) + " ");
}
返回类型是int,但System.out.print()不返回任何内容,因此将int更改为void并删除return关键字。接下来,您需要遍历整个数组:
public static void arai (){
for (int i=0; i< 100; i++) {
//this is modulo, which means that if i divided by 5 has no remainder, print next line
//eg. 5%2 = 1, because 2*2 + 1 = 5
//5%3 = 2 and so on, read here http://en.wikipedia.org/wiki/Modulo_operation
if (i%5 == 0) {
System.out.println();
}
//finally, print each value from rand array
System.out.print(rand[i] + " ");
}
}
广告。 3 试试自己,如果遇到问题就卷土重来,但要遵循Johnnei关于找到最小数字的建议。
注意:您还需要将rand数组声明设置为全局,以便arai()方法可以使用它。