2013-02-03 57 views
1

我被卡在这个任务中。它是从用户输入的文本文件中获取一些等级,而不是计算最大值,最小值和平均值。问题是每次我尝试编译它,它给了我这个从文本文件计算等级

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; 
    } 

} 

回答

2

你试图传递

int n = readfile (grades); 

但你创建的函数:

public static int readfile (int [] grades, String file) 

正在问对于第二个变量作为字符串

你需要改变你的线路:

String fileName= YOUR_FILE_NAME; 
int n = readfile (grades,fileName); 
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); 

所以,如果用户得到的文件名,并把它传递给你的方法。