我对编程很陌生,随时都可以在回复中苛刻。一切都有帮助。 基本上我正在尝试调用方法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" );
}
}
答案 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" );
}