这是我的java代码。
import java.io.*;
import java.util.*;
import java.util.concurrent.TimeUnit;
class search
{
private int numelem;
private int[] input=new int[100];
public void setNumofelem()
{
System.out.println("Enter the total numebr of elements");
Scanner yz=new Scanner(System.in);
numelem=yz.nextInt();
}
public void randomnumber() throws Exception
{
int max=500,min=1,n=numelem;
Random rand = new Random();
for (int j=0;j < n;j++)
{
input[j]=rand.nextInt(max)+1;
}
}
public void printinput()
{
int b=numelem,t=0;
while(true)
if(b!=0)
{
System.out.print(" "+input[t]);
b--;
t++;
}
else
break;
}
}
public class mycode
{
public static void main(String args[]) throws Exception
{
search a=new search();
a.setNumofelem();
a.randomnumber();
a.printinput();
}
}
现在函数randomnumber()
只返回相同的数字。如果我作为一个单独的java程序执行它,函数执行得很好但是如果我用对象调用它就会失败。我也尝试过以下变化但是没有工作一切都返回相同的数字。
变体1:
public void randomnumber() throws Exception
{
int max=500,min=1,n=numelem;
Random rand = new Random();
for (int j=0;j < n;j++)
{
TimeUnit.SECONDS.sleep(1);
input[j]=rand.nextInt(max)+1;
}
}
变体2:
public void randomnumber() throws Exception
{
int max=500,min=1,n=numelem;
Random rand = new Random();
for (int j=0;j < n;j++)
{
rand.setSeed(System.nanoTime());
input[j]=rand.nextInt(max)+1;
}
}
变体3:
public void randomnumber() throws Exception
{
int max=500,min=1,n=numelem;
Random rand = new Random();
for (int j=0;j < n;j++)
{
TimeUnit.SECONDS.sleep(1);
rand.setSeed(System.nanoTime());
input[j]=rand.nextInt(max)+1;
}
}
示例输入/输出:
输入元素数量:
5
23 23 23 23 23 23
答案 0 :(得分:3)
问题不是随机。问题出在您的printinput()
方法中。
您在每次迭代时都打印相同的元素,因为您永远不会更改用于访问数组的索引。
如何解决?在每次迭代时增加索引t
。此外,使用简单的for
循环来打印数组内容将更好,更容易阅读:
public void printinput()
{
for (int i = 0; i < numelem; i++) {
System.out.print(" " + input[i]);
}
}
注意:我强烈建议您遵循Java命名约定。对方法/变量使用mixedCase
,对类/接口使用CamelCase
。