Java 查找有多少个连续数字
我需要找出我的随机数生成器中出现了多少个连续数,除了连续数部分,我的程序还在运行。这是我得到的。我试过很多东西,但由于某些原因我就是想不出来,请帮助我!有1000个数字和500个随机数,然后我找到最小值和最大值,然后是平均值。现在我需要找出有多少连续的数字,例如9,10,11或55,56,57。。。 我也得到了这个错误。。。 --线程“main”java.util.NoSuchElementException中出现异常Java 查找有多少个连续数字,java,Java,我需要找出我的随机数生成器中出现了多少个连续数,除了连续数部分,我的程序还在运行。这是我得到的。我试过很多东西,但由于某些原因我就是想不出来,请帮助我!有1000个数字和500个随机数,然后我找到最小值和最大值,然后是平均值。现在我需要找出有多少连续的数字,例如9,10,11或55,56,57。。。 我也得到了这个错误。。。 --线程“main”java.util.NoSuchElementException中出现异常 int num, largest, smallest, sum =
int num, largest, smallest, sum = 0, count = 0;
int programnumber = 6;
header (prw, programnumber);
double average = 0;
Random gen = new Random();
FileWriter fw = new FileWriter("randomdata.txt");
for (int i1 = 0; i1 < 500; i1++){
num = gen.nextInt(1000);
fw.write(num + "\n");
count++;
}
fw.close();
File numfile = new File("randomdata.txt");
Scanner infile = new Scanner(numfile);
largest = infile.nextInt();
smallest = infile.nextInt();
largest = 0;
smallest = 999;
while (infile.hasNext()){
num = infile.nextInt();
System.out.println(num);
if (num > largest){
largest = num;
}
if (num < smallest){
smallest = num;
}
sum = sum + num;
count++;
}
average = (double) sum / count;
System.out.println("The largest is: " + largest);
prw.println("The largest is: " + largest);
System.out.println("The smallest is: " + smallest);
prw.println("The smallest is: " + smallest);
System.out.println("The average is: " + average);
prw.println("The average is: " + average);
// here is the part where I am stuck
int prev, consec=0;
prev= infile.nextInt();
num= infile.nextInt();
while (num >= 0) {
if (num >= prev){
consec++;
prev = num;
num = infile.nextInt();
}
}
System.out.println(consec);
prw.close();
}
int num,最大,最小,和=0,计数=0;
int程序编号=6;
标题(prw,程序编号);
双平均=0;
Random gen=新的Random();
FileWriter fw=新的FileWriter(“randomdata.txt”);
对于(int i1=0;i1<500;i1++){
num=gen.nextInt(1000);
fw.write(num+“\n”);
计数++;
}
fw.close();
File numfile=新文件(“randomdata.txt”);
扫描仪填充=新扫描仪(numfile);
最大=infle.nextInt();
最小=infle.nextInt();
最大值=0;
最小=999;
while(infle.hasNext()){
num=infle.nextInt();
系统输出打印项数(num);
如果(数值>最大值){
最大=num;
}
if(num<最小值){
最小=num;
}
sum=sum+num;
计数++;
}
平均值=(双)总和/计数;
System.out.println(“最大的是:“+最大的”);
prw.println(“最大值为:“+最大值”);
System.out.println(“最小的是:“+最小的”);
prw.println(“最小值为:“+最小值”);
System.out.println(“平均值为:“+平均值”);
prw.println(“平均值为:“+平均值”);
//这就是我被卡住的地方
int-prev,conce=0;
prev=infle.nextInt();
num=infle.nextInt();
而(num>=0){
如果(num>=prev){
conce++;
prev=num;
num=infle.nextInt();
}
}
系统输出打印LN(连续);
prw.close();
}
num
不能小于零吗?
错误在您的if中:
(num>=prev)
并不意味着它们是连续的。只有第一个大于或等于。
它应该是(num+1==prev)
此外,您正在读取所有文件以查找最大值、最小值和平均值,在验证连续数字时没有任何内容可读取
编辑:
本部分代码:
largest = infile.nextInt();
smallest = infile.nextInt();
largest = 0;
smallest = 999;
正在丢弃前两个数字。如果您给我们提供示例输入和预期输出,将更容易帮助您。在我看来,您在开始查找“连续”数字(无论这意味着什么)之前将输入文件一直运行到最后。当num>=prev
第一次为false时,底部循环将永远循环,因为在那之后什么都不会改变。(你需要清楚地定义“连续的”。我怀疑你是否知道这个词的意思。)连续的定义是,它以升序排列,比如,1,2,3…当你计算其他事物时,为什么不计算出有多少个连续的数字?或者您可以再次打开该文件。因此,将if语句放入while?解决方案取决于您。我们在这里指出了错误。但是没有人会为你编码。注意不要读取新的int值并丢弃它们。如果答案合适,你应该接受它,并标记对问题有用的注释。