我被困在这项任务中。它是关于从用户输入的文本文件中取一些等级而不是计算max,min,mean。问题是我每次尝试编译它都会给我这个
St.java:10: readfile(int[],java.lang.String) in St cannot be applied to (int[])
int n = readfile (grades);
源代码:
import java.io.*;
import java.util.Scanner;
public class St
{
public static void main ( String [] a )
{
Scanner kbd = new Scanner(System.in);
int count = 0;
int [] grades = new int [500];
int n = readfile (grades);
System.out.println("What file contains the data?");
String file = kbd.nextLine();
System.out.println("The maximum grade is: " + max(grades,n));
System.out.println("The minimum grade is: " + min(grades,n));
System.out.println("The mean grade is: "+ mean(grades,n));
}
public static double mean(int [] grades,int n)
{
double sum = 0;
for(int i = 0; i < n; i++)
{
sum = sum + grades[i];
}
return sum/n;
}
public static int readfile (int [] grades, String file)
{
int count = 0;
try
{
Scanner f = new Scanner (new File (file)); // name of file
while (f.hasNext()) // checks if there is more input in the file
{
grades[count]=f.nextInt (); // grabs the next piece of input
count++; // moves onto the next piece of input (increasing count)
}
}
catch (IOException e)
{
System.err.println (e);
System.exit(0);
}
return count;
}
public static void writeArray (int [] grades , int n)
{
for (int i = 0; i < n; i++)
{
System.out.println (grades[i]);
}
}
public static int max(int [] y,int m)
{
int mx = 0;
for(int i = 0; i < m; i++)
{
if(y[i] > mx)
{
mx = y[i];
}
}
return mx;
}
public static int min(int [] grades,int n)
{
int mn = 0;
for(int i = 0; i < n; i++)
{
if(grades[i] < mn)
{
mn = grades[i];
}
}
return mn;
}
}
答案 0 :(得分:2)
你正试图通过
int n = readfile (grades);
但是您创建的功能:
public static int readfile (int [] grades, String file)
要求第二个变量作为String
你需要改变你的行:
String fileName= YOUR_FILE_NAME;
int n = readfile (grades,fileName);
答案 1 :(得分:0)
您没有使用从用户那里获得的输入文件名。
改变这个:
int n = readfile (grades);
System.out.println("What file contains the data?");
String file = kbd.nextLine();
到
System.out.println("What file contains the data?");
String file = kbd.nextLine();
int n = readfile (grades, file);
因此,您从用户处获取文件名并将其传递给您的方法。