-2

我对编程很陌生,请随意在您的回复中苛刻。任何事情都有帮助。基本上我正在尝试调用 LineCount() 方法,但是当我尝试编译命令提示符时,会抱怨在 String[A] 处需要 .class (我相信第 8 行)

*谢谢大家的帮助!我的代码现在可以工作了!我真的很感谢所有的意见

import java.util.Scanner;
import java.io.*;

public class FileCount{

    public static void main(String[] args) throws IOException{

        String[] in = new Scanner(new File(args[0]));
        System.out.println(lineCount(String[] in);

    }

    public static void lineCount(String[] A){

        // check number of command line arguments
        if(args.length != 1){
            System.err.println("Usage: LineCount file");
            System.exit(1);
        }

        // count lines, words, and chars in file
        int lineCount = 0;
        while( in.hasNextLine() ){
            in.nextLine();
            lineCount++;
        }
        in.close();

        System.out.println( args[0]+" contains "+lineCount+" lines" );

    }

}
4

3 回答 3

4

首先

  System.out.println(lineCount(String[] in); // this is incomplete need to close)

假设您在这里提出问题时犯了错误,请更改

 System.out.println(lineCount(String[] in));

  System.out.println(lineCount(in));
于 2014-07-10T04:51:49.360 回答
2

->你的代码有很多错误,除了其他答案想补充一点,既然你lineCount(in)作为参数传递给方法,那么现在通过变量而不是linecount()引用参数。lineCount(String[] A)Ain

->您也不能引用args内部linecount()方法,因为它是main()方法的参数,因此在其范围内仅限于它。

->你不能这样做String[] in = new Scanner(new File(args[0]));,你正在将一个Scanner实例分配给一个字符串数组,你必须这样做

Scanner in = new Scanner(new File(args[0]));

->您在方法linecount()内部调用System.out.println(),虽然您的方法linecount()的返回类型为 void,但不要将您的方法放在print()函数内部,因为无论如何它里面都有print()语句。

->也许最后,可能还有更多,因为你的in变量是类型的Scanner,把你的方法声明改为

 public static void lineCount(Scanner in){

现在像lineCount(in)from一样调用它main()

编辑:-由于您是初学者,我将为您的问题提供工作代码:-

import java.util.Scanner;
import java.io.*;

public class FileCount{

    public static void main(String[] args) throws IOException{


      // check number of command line arguments, and check it in main()
       if(args.length != 1){
            System.err.println("Usage: LineCount file");
            System.exit(1);
        }

    Scanner in = new Scanner(new File(args[0]));
    System.out.println( args[0]+" contains "+lineCount(in)+" lines" ); //call this line in main() and not in linecount() as you refer to both args and need the linecount.

    }

    public static int lineCount(Scanner in){


        // count lines, words, and chars in file
        int lineCount = 0;
        while( in.hasNextLine() ){
            in.nextLine();
            lineCount++;
        }
        in.close();

        return lineCount; //return the linecount from method 

    }

}
于 2014-07-10T05:12:48.513 回答
1

String[] in = new Scanner(new File(args[0]));创建 Scanner 对象并将其分配给数组的第一个问题不是这样工作的。更改您的代码以读取文件并将其存储在一些数组列表中,例如

    List<String> list= new ArrayList<String>();
    Scanner in = new Scanner(new File(args[0]));

    while (in.hasNextLine()) {
        // find next line
        String line = in.nextLine();
        list.add(line);
    }

然后,如果您愿意,可以将列表转换为字符串数组,这并不是真正需要的

    String[] strArr = list.toArray(new String[0]);

            System.out.println(java.util.Arrays.toString(strArr));
    lineCount(strArr);

然后调用 lineCount() 方法来计算文件中的行数。

public static void lineCount(String[] A){
    System.out.println("File contains "+A.length+" lines" );

}
于 2014-07-10T05:25:12.073 回答