-2

私はプログラミングにかなり慣れていないので、返信を厳しくしてもかまいません。何でも役に立ちます。基本的に、メソッド LineCount() を呼び出そうとしていますが、コマンド プロンプトをコンパイルしようとすると、.class が String[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" );

    }

}
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 に答える