我在这个项目中已经尝试了几个星期,我必须创建一个从1-250生成500个随机数的类,在第二个类中我必须继承第一个类属性并在文本文件中写下所有这些数字但是当我遇到问题并使用它时我遇到了问题并且我没有找到办法在线进行。
我的第一堂课是
import java.util.Random;
public class GenKeys {
public static void random(){
for (int i = 0; i < 250; i++) {
int x = (int) (Math.random() * 100);
}
}
}
我的第二个代码是
import java.util.Random;
import java.io.*;
import java.lang.*;
public class MainProg extends GenKeys{
public static void main(String[] args){
public static void random(){
try {
BufferedWriter out = new BufferedWriter(new FileWriter("file.txt"));
out.write( x + System.getProperty("line.separator"));// when i compile the x is not found!!!
out.close();
} catch (IOException e) {
System.out.print(e);
}
}
如何让这两个课程一起工作?
答案 0 :(得分:4)
What am i doing Wrong ?
GenKeys
中的MainProg
实例x
,当您应该使用时,例如数组random()
方法答案 1 :(得分:2)
嗯,有些事情在这里不正确,但最奇怪的是你使random()函数成为一个空白。
void random()
X去哪儿了?你只需创建一个新的int,但什么也不做。
除此之外,还有其他问题,正如其他人提到的那样。 我建议你阅读Java中的函数,特别是关于int和void之间的区别。
答案 2 :(得分:0)
我还没有找到一种方法在线完成。
我不确定你看起来很难。
如何让您的代码正常工作
首先,您要将方法的类型和名称更改为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();
您的代码的各种问题
你在这里误用了继承。您的班级不是GenKey
的类型。它只是使用它,所以它应该是你班级的一个领域。
其次,方法只能返回一个值或一个对象。它不能返回250个数字。您要为x
分配250个号码。这只会存储生成的最后一个数字。
答案 3 :(得分:0)
我不认为这是正确的做法。你需要另一个类,例如KeyWriter从GenKeys继承。让它随机使用GenKeys方法(它不需要是静态的)
另外,你的随机方法是错误的,你只生成250个而不是500个,而且它们不是从0到250
我的解决方案是:
1)从GenKeys继承KeyWriter
2)使用nextInt修改random以仅返回1个生成的数字
3)在KeyWriter中使用循环随机调用500次并将这些值写入文件
4)在你的主要方法中使用KeyWriter类
我没有发布实际解决方案,因为看起来你正在做功课。
答案 4 :(得分:0)
我看到蝙蝠的一些问题(和评论):
x
不是实例字段,不会存储在任何地方,因此如何从子类中访问它。
正如其他人所说,{for循环的每次迭代都会覆盖x
。
为什么在mainProg.random()
方法中声明了mainProg.main()
方法?
我不认为继承是要走的路,除非这个项目绝对需要。为什么不在mainProg类的main方法中创建一个随机类的实例?
如果你想使用继承,我相信在super.random()
方法中需要调用mainProg.random()
。(请有人确认一下。我不是100%肯定)
如果是我,我会在GenKeys.random()方法中做一些事情:
public int[] random() {
int[] keys = new int[500];
for(int i = 0; i < 500; ++i)
{
keys[i] = (int) (Math.random() * 100);
}
return keys;
}
希望这会让你开始走上正轨。
答案 5 :(得分:0)
x
是random()
的局部变量
所以你不能直接访问该类的本地变量。
而你正试图生成500随机没有。在1-250之间,所以改变第一类的for循环
for (int i = 0; i < 500; i++){
.....
}