【发布时间】:2015-11-11 19:00:20
【问题描述】:
好的,这是一个学校项目,我似乎无法弄清楚我做错了什么,我意识到有更好的方法来做很多事情,但必须这样做(我会注意具体是什么)。
我需要编写两个非常简单的程序。
第一个程序创建一个包含 300 个 1 到 54 范围内的随机整数的文件,然后打印到一个文本文件中。
第二个程序读取该文本文件并将内容放入一个数组中。然后对数组进行操作以输出一些东西,数字的平均值,以及数字在某个范围内出现的次数。我也试图一次把整个数组拿出来。不幸的是,所有部分基本上都不起作用,或者我不理解某些东西,我很确定它都是大声笑。
方案一如下
import java.util.*;
import java.io.*;
public class OutStream{
public static void main(String[] args){
int Counter = 0,
Value;
Random Gen = new Random();
System.out.println("Generating Numbers and Text File Now");
try{
File out = new File("F:\\Text.txt");
PrintWriter P = new PrintWriter(out);
while(Counter <= 300){
Value = Gen.nextInt(54)+1;
P.println(Value);
++Counter;
System.out.println("Value: " + Value);
}
P.close();
}catch(Exception E){
E.printStackTrace();
System.out.println(E.getMessage());
}
System.out.println("The Program has ended");
}
}
第二个程序是它全部崩溃的地方。
import java.util.*;
import java.io.*;
public class InStream {
public static void main(String[] args) {
int [] NumArray = new int[301];
int PosNum = 0,
Total = 0,
Average = 0,
Range1 = 0,
Range2 = 0,
Range3 = 0,
Range4 = 0,
Range5 = 0,
Range6 = 0;
try{
File Fout = new File("F:\\Text.txt");
PosNum = 0;
Scanner Fin = new Scanner(Fout);
while(Fin.hasNextInt()){
NumArray[++PosNum] = Fin.nextInt();
}
Fin.close();
}catch(Exception E){
E.printStackTrace();
System.out.println("***ERROR ***** " + E.getMessage());
}
for(NumArray[PosNum] = 0; NumArray[PosNum] <= 301;){
Total += NumArray[PosNum++];
if(NumArray[Range1] >= 1 && NumArray[Range1] <= 10){
Range1++;
}
if (NumArray[Range2] >= 11 && NumArray[Range2] <= 20){
Range2++;
}
if(NumArray[Range3] >= 21 && NumArray[Range3] <= 30){
Range3++;
}
if(NumArray[Range4] >= 31 && NumArray[Range4] <= 40){
Range4++;
}
if(NumArray[Range5] >= 41 && NumArray[Range5] <= 50){
Range5++;
}
if(NumArray[Range6] >= 51 && NumArray[Range6] <= 54){
Range6++;
}
}
Average = Total / 301;
System.out.println("The Average Is: " + Average);
System.out.println("1 Through 10 appear: " + Range1 + " Times");
System.out.println(" 11 Through 20 appear: " + Range2 + "Times");
System.out.println("21 Through 30 appear: " + Range3 + " Times");
System.out.println("31 Through 40 appear: " + Range4 + " Times");
System.out.println("41 Through 50 appear: " + Range5 + " Times");
System.out.println("51 Through 54 appear: " + Range6 + " Times");
}
}
这是我最新的尝试。
import java.util.*;
import java.io.*;
public class FixedInstream {
public static void main(String[] args) {
int [] MyArray = new int[301];
int PosNum = 0,
Average,
Total = 0,
R1 = 0,
R2 = 0,
R3 = 0,
R4 = 0,
R5 = 0,
R6 = 0,
R7 = 0;
try{
File Fout = new File("F:\\Text.txt");
PosNum = 0;
Scanner Fin = new Scanner(Fout);
while(Fin.hasNextInt()){
MyArray[PosNum] = Fin.nextInt();
Total += MyArray[PosNum];
}
Fin.close();
}catch(Exception E){
E.printStackTrace();
System.out.println("***ERROR ***** " + E.getMessage());
}
for(MyArray[PosNum] = 0; MyArray[PosNum] <= 300; ++MyArray[PosNum]){
if(MyArray[R1] >= 1 && MyArray[R1] <= 10){
R1++;
}
if (MyArray[R2] >= 11 && MyArray[R2] <= 20){
R2++;
}
if(MyArray[R3] >= 21 && MyArray[R3] <= 30){
R3++;
}
if(MyArray[R4] >= 31 && MyArray[R4] <= 40){
R4++;
}
if(MyArray[R5] >= 41 && MyArray[R5] <= 50){
R5++;
}
if(MyArray[R6] >= 51 && MyArray[R6] <= 54){
R6++;
}
}
Average = Total / 301;
System.out.println("The Average Is: " + Average);
System.out.println("1 Through 10 appear: " + R1 + " Times");
System.out.println("11 Through 20 appear: " + R2 + " Times");
System.out.println("21 Through 30 appear: " + R3 + " Times");
System.out.println("31 Through 40 appear: " + R4 + " Times");
System.out.println("41 Through 50 appear: " + R5 + " Times");
System.out.println("T51 Through 54 appear: " + R6 + " Times");
}
}
程序没有正确输出下面的示例,我显然忘记在我的初始评论中添加。
输出:
The Average Is: 27
The Numbers 1 Through 10 appear: 1 Times
The Numbers 11 Through 20 appear: 1 Times
The Numbers 21 Through 30 appear: 1 Times
The Numbers 31 Through 40 appear: 1 Times
The Numbers 41 Through 50 appear: 1 Times
The Numbers 51 Through 54 appear: 1 Times
文本文件中有 300 个数字 1 - 54 这些数字重复的方式不同,但通常是 10 - 50 次,正如您从上面看到的那样,它只显示一次,这让我相信我不会增加一些东西正确。
【问题讨论】:
-
您需要演示确切的问题、输入和预期输出,以及您为尝试调试问题所做的工作。
-
我同意@SkinnyJ 的观点,你对到底发生了什么还不够清楚。另外,当您说必须以这种方式完成时,您的意思是什么?与 Scanner 类相比,有更好的方法来读取和写入这些文件,包括 BufferedReaders 和 Writers。你能澄清一下吗?
-
我已经在程序的最顶部和源代码的底部进行了上述操作。 1.我需要找到该区域包含的平均数。 2. 我需要显示数字 1- 10 11- 20 21 - 30 31 - 40 等重复的次数。我尝试了很多不同的东西,我不会去购物中心,因为它不相关。我稍后会发布最新的尝试
-
" 必须以这种方式完成" 这很不言自明,这是一个学校项目,这意味着我的布局方式就是它必须提交的方式。显然错误必须被修复,我正在尝试这样做。我不是在找你重写我的源代码我在寻找正确的方向。
标签: java arrays inputstream