如何使两个类在Java中协同工作?
我已经在这个项目中尝试了几个星期,我必须创建一个类,从1到250生成500个随机数,在第二个类中,我必须继承第一个类的属性,并将所有这些数字写入文本文件,但当我在获取属性和使用这些属性时遇到问题,我还没有找到一种方法在线 我的第一节课是如何使两个类在Java中协同工作?,java,Java,我已经在这个项目中尝试了几个星期,我必须创建一个类,从1到250生成500个随机数,在第二个类中,我必须继承第一个类的属性,并将所有这些数字写入文本文件,但当我在获取属性和使用这些属性时遇到问题,我还没有找到一种方法在线 我的第一节课是 import java.util.Random; public class GenKeys { public static void random(){ for (int i = 0; i < 250; i++) { int x = (int) (M
import java.util.Random;
public class GenKeys {
public static void random(){
for (int i = 0; i < 250; i++) {
int x = (int) (Math.random() * 100);
}
}
}
我怎样才能使这两个类一起工作
What am i doing Wrong ?
- 在
MainProg
- 您一直在覆盖随机值,因为您只使用单个变量
,而您应该使用例如数组x
- 在[0..99]范围内创建250个值,而不是在[1..250]范围内创建500个值
- 您不会从
方法中存储或返回任何内容random()
int
public static int randomNum()
然后,从代码中删除循环,只返回生成的随机数:
return (int)Math.Random() * 100; //By the way there is a Random class.
在random
方法中,需要循环:
for(int x = 0; x < 250; x++)
{
BufferedWriter out = new BufferedWriter(new FileWriter("file.txt"));
out.write( randomNum() + System.getProperty("line.separator"));
}
out.close();
for(int x=0;x<250;x++)
{
BufferedWriter out=新的BufferedWriter(新的FileWriter(“file.txt”);
write(randomNum()+System.getProperty(“line.separator”);
}
out.close();
代码中的各种问题
你在这里错误地使用了继承。您的类不是GenKey
类型。它只是使用它,所以它应该是类中的一个字段
其次,一个方法只能返回一个值或一个对象。它不能按原样返回250个数字。您正在为
x
分配250个数字。这只存储生成的最后一个数字。我认为这不是正确的方法。您需要另一个类,例如KeyWriter,以从GenKeys继承。让它使用GenKeys方法random(它不需要是静态的)
另外,您的随机方法是错误的,您只生成250个密钥,而不是500个,并且它们不是从0到250。我的解决方案是:
1) 从GenKeys继承KeyWriter
2) 使用nextInt修改random以仅返回1个生成的数字
3) 使用cycle inside KeyWriter调用random 500次并将这些值写入文件
4) 在主方法中使用KeyWriter类
我没有公布实际的解决方案,因为看起来你在做功课。好吧,这里有些东西不正确,但最奇怪的是你把random()函数变成了一个空函数
void random()
X去哪里?您只需创建一个新的int,但不做任何处理
除此之外,还有其他问题,正如其他人提到的。
我建议您阅读Java中的函数,特别是int和void之间的区别。我看到的一些关于bat的问题(和注释):
x
不是实例字段,也不存储在任何位置,因此如何从子类访问它x
mainProg.main()
方法中声明了mainProg.random()
方法mainProg.random()
方法中需要调用super.random()
。(请有人确认。我不是100%确定)public int[]random(){
int[]键=新的int[500];
对于(int i=0;i<500;++i)
{
键[i]=(int)(Math.random()*100);
}
返回键;
}
希望这能让您开始正确的工作。
x
是random()
的局部变量因此,您不能直接在类外访问局部变量。
您试图在1-250之间生成500个随机编号,所以在第一个类中更改for循环
for (int i = 0; i < 500; i++){
.....
}
for(int i=0;i<500;i++){
.....
}
您扩展了GenKeys,但在写入值之前,您从未实际将x
继承到某个值。因此,编译器错误…最后一个是最重要的,尽管其他的也是正确的。非常感谢,这起了作用,我只是不得不适应其他的意见,这些意见也回答了我,它现在工作得很好!
public int[] random() {
int[] keys = new int[500];
for(int i = 0; i < 500; ++i)
{
keys[i] = (int) (Math.random() * 100);
}
return keys;
}
for (int i = 0; i < 500; i++){
.....
}