有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么我会收到一封信。预计要上课吗?试图在java中调用方法

我对编程很陌生,请随意在回复中措辞严厉。什么都行。 基本上,我试图调用一个方法LineCount(),但当我试图编译时,命令提示符会抱怨。在字符串[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) 个答案

  1. # 1 楼答案

    你的第一个问题String[] in = new Scanner(new File(args[0]));创建一个扫描对象并将其分配到一个数组,它不是这样工作的。更改代码以读取文件并将其存储在类似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);
        }
    

    如果你想的话,你可以把列表转换成字符串数组,这样就不需要了

        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" );
    
    }
    
  2. # 2 楼答案

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

    ->您也不能在linecount()方法中引用args,因为它是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)来自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 
    
        }
    
    }
    
  3. # 3 楼答案

    首先

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

    假设你在这里提出问题时犯了错误,改变一下

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

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