我为什么要收到.class?试图在java中调用一个方法

时间:2014-07-10 04:49:59

标签: java class methods expected-exception

我对编程很陌生,随时都可以在回复中苛刻。一切都有帮助。 基本上我正在尝试调用方法LineCount()但是当我尝试编译命令提示符时抱怨.class在字符串[A]中是预期的(我相信第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" );

    }

}

3 个答案:

答案 0 :(得分:3)

首先

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

假设您在此处提出问题时出错,请更改

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

  System.out.println(lineCount(in));

答案 1 :(得分:1)

- > 您的代码中存在许多错误,除了其他答案要添加之外,因为您将lineCount(in)作为参数传递给linecount()方法,然后通过lineCount(String[] A)变量而不是A引用in中的参数。

- > 此外,您无法在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(),但您的方法print()的返回类型为void,请不要将您的方法放入print()函数,因为无论如何它都有in个语句。

- > 也许最后,可能会有更多,因为您的Scanner变量的类型为 public static void lineCount(Scanner in){ ,请将您的方法声明更改为

lineCount(in)

现在称其为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 } }

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

{{1}}

答案 2 :(得分:0)

您的第一个问题String[] in = new Scanner(new File(args[0]));创建一个Scanner对象并将其指向一个数组,它不会像这样工作。更改您的代码以读取文件并将其存储在某些arraylist中,如

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

然后,如果你想要可以转换为list到String数组,这不是真的有必要像这样

    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" );

}