我一直在努力修复此代码几个小时,并访问过该网站上的无数问题。
我为代码转储道歉,但我不确定代码出了什么问题。
错误基于读取文件,但我将所有代码都包含在内是安全的。
package ch7;
import java.util.Scanner;
import java.io.*;
public class DistributionChart
{
public static void main (String[] args) throws IOException
{
int size = 10;
int[] ranges = new int[size]; // each entry represents a range of values
getData(ranges); //pass the entire array into the method
displayChart(ranges);
getDataFromFile(ranges);
displayChartToFile(ranges);
System.out.println("\nSee you later!!");
} //end of main
public static void getData(int[] someArray)
{
Scanner scan = new Scanner (System.in);
System.out.println ("Enter a series of numbers between 1 and 100. Separate each number with a space.");
System.out.println ("Signal the end by entering a number outside " +
"of that range and then press enter.");
System.out.print("Go: ");
//reads an arbitrary number of integers that are in the range 1 to 100 inclusive
//for each integer read in, determine which range it is in and increment the corresponding element in the array
//your code goes here
int values = 0;
values = scan.nextInt();
while(values > 0 && values < 101)
{
if(values >= 1 && values <= 10)
{
someArray[0]++;
}
else if (values >= 11 && values <= 20)
{
someArray[1] ++;
}
else if (values >= 21 && values <= 30)
{
someArray[2]++;
}
else if(values >= 31 && values <= 40)
{
someArray[3]++;
}
else if(values >= 41 && values <= 50)
{
someArray[4]++;
}
else if(values >= 51 && values <= 60)
{
someArray[5]++;
}
else if(values >= 61 && values <= 70)
{
someArray[6]++;
}
else if(values >= 71 && values <= 80)
{
someArray[7]++;
}
else if(values >= 81 && values <= 90)
{
someArray[8]++;
}
else if(values >= 91 && values <= 100)
{
someArray[9]++;
}
values = scan.nextInt();
}
scan.close();
}//end of getData
public static void displayChart(int[] someArray)
{
System.out.println("Distribution chart by Royce T.");
System.out.println("================================");
//Print histogram.
for(int i = 0; i < someArray.length; i++)
{
System.out.print( ((i * 10 + 1)) + "-" + (((i *10 +1)) + 9) + " \t" + "|");
for(int y = 0; y < someArray[i]; y++)
{
System.out.print("*");
}
System.out.println();
}
} //end of displayChart
public static void getDataFromFile(int[] someArray) throws IOException
{
Scanner inFile = new Scanner(new FileReader("C:/Users/RTmag/workspaceRATI//CSC110/inputFile.txt"));
int values = 0;
while(inFile.hasNext())
{
values = inFile.nextInt();
while(values > 0 && values < 101)
{
if(values >= 1 && values <= 10)
{
someArray[0]++;
}
else if (values >= 11 && values <= 20)
{
someArray[1] ++;
}
else if (values >= 21 && values <= 30)
{
someArray[2]++;
}
else if(values >= 31 && values <= 40)
{
someArray[3]++;
}
else if(values >= 41 && values <= 50)
{
someArray[4]++;
}
else if(values >= 51 && values <= 60)
{
someArray[5]++;
}
else if(values >= 61 && values <= 70)
{
someArray[6]++;
}
else if(values >= 71 && values <= 80)
{
someArray[7]++;
}
else if(values >= 81 && values <= 90)
{
someArray[8]++;
}
else if(values >= 91 && values <= 100)
{
someArray[9]++;
}
values = inFile.nextInt();
}
inFile.close();
}
}
public static void displayChartToFile(int[] someArray) throws IOException
{
getDataFromFile(someArray);
PrintWriter outFile = new PrintWriter( "C:/Users/RTmag/workspaceRATI//CSC110/outputFile.txt");
//Print chart title with your name
outFile.println("Distribution chart by Royce T.");
outFile.println("================================");
//Print histogram.
for(int i = 0; i < someArray.length; i++)
{
outFile.print( ((i * 10 + 1)) + "-" + (((i *10 +1)) + 9) + " \t" + "|");
for(int x = 0; x <someArray[i]; x++)
{
outFile.print("*");
}
outFile.println();
}
outFile.close();
}
}
// end of DistributionChart tester class
我正在尝试将displayChartToFile方法写入名为outputFile.txt的文件,该文件位于CSC110文件夹中。该文件夹还包含我的bin和src文件夹。
每当我运行代码时,输入后前两个方法都会正确显示。
包含错误的输出示例:
Enter a series of numbers between 1 and 100. Separate each number with a space.
Signal the end by entering a number outside of that range and then press enter.
Go: 55 66 555
Distribution chart by Royce T.
================================
1-10 |
11-20 |
21-30 |
31-40 |
41-50 |
51-60 |*
61-70 |*
71-80 |
81-90 |
91-100 |
Exception in thread "main" java.io.FileNotFoundException: C:\Users\RTmag\workspaceRATI\CSC110\inputFile.txt (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at ch7.DistributionChart.getDataFromFile(DistributionChart.java:143)
at ch7.DistributionChart.main(DistributionChart.java:28)
第28行是:
getDataFromFile(ranges);
第143行是:
Scanner inFile = new Scanner(new FileReader("C:/Users/RTmag/workspaceRATI//CSC110/inputFile.txt"));
inputFile.txt中的文字是
75 49 62 35 18 97 62 54 83 61 44 29 98 75 14
outputFile.txt为空。
非常感谢任何帮助。谢谢!
如果我没有掌握所有可能需要的信息,请告诉我!
我修复了文件位置,但现在又返回了一组新的错误。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at ch7.DistributionChart.getDataFromFile(DistributionChart.java:207)
at ch7.DistributionChart.main(DistributionChart.java:30)
答案 0 :(得分:1)
对我来说,这看起来不错......
var someArray = [1,2,3];
var value = someArray.indexOf(3) + 1 || 1;
console.log(value -= 1);
var someArray = [1,2,3];
var value = someArray.indexOf(4) + 1 || 1;
// how do we know that `4` is not at index `0`?
console.log(value -= 1);
var someArray = [1,2,3];
var value = someArray.indexOf(4) + 1 || void 0;
// we know for certain that `4` is not found in `someArray`
console.log(value, value = value || 0);
int values = 0;
while (inFile.hasNext()) {
values = inFile.nextInt();
while (values > 0 && values < 101) {
//...
values = inFile.nextInt();
}
}
值,int
之间时你循环,好吧,但如果到达输入的末尾会发生什么?1..100
啊啊,不确定。根据您对int
的输入,您可以简单地执行类似......
75 49 62 35 18 97 62 54 83 61 44 29 98 75 14
但是如果输入文件可能有多行,你可以做......
int values = 0;
while (inFile.hasNext()) {
values = inFile.nextInt();
//...
}
(即使它只有一行,你也可以这样做。)
基本问题是,您正在阅读文件的末尾并且int values = 0;
while (inFile.hasNext()) {
String nextLine = inFile.nextLine();
Scanner line = new Scanner(nextLine);
while (line.hasNextInt()) {
values = line.nextInt();
//...
}
}
已用完了要读取的数据
答案 1 :(得分:0)
更改此行
Scanner inFile = new Scanner(new FileReader("C:/Users/RTmag/workspaceRATI//CSC110/inputFile.txt"));
到
Scanner inFile = new Scanner(new FileReader("C:/Users/RTmag/workspaceRATI/CSC110/inputFile.txt"));
或
Scanner inFile = new Scanner(new FileReader("C:\\Users\\RTmag\\workspaceRATI\\CSC110\\inputFile.txt"));