从 args (java) 读取文件时捕获错误
catch error while reading file from args (java)
有人可以向我解释为什么我会收到 catch 错误吗?
我正在尝试从我传入 args 的文件中读取值(数字)。
而且我不太明白问题出在哪里。
import java.util.Scanner;// Import the Scanner class to read text files
import java.io.File;// Import the File class
import java.io.FileNotFoundException;// Import this class to handle errors
import java.io.*;
public class main extends GeneralMethods {
public static void main(String[] args) {
if (args.length <= 1 || args.length > 2) {
println("Error, usage: software must get two input files");
System.exit(1);
}
String file_name1 = args[0]; // data to insert
String file_name2 = args[1]; // data to check
File data_to_insert = new File(file_name1);
File data_to_check = new File(file_name2);
Scanner input = new Scanner(System.in); // Create a Scanner object
println("Enter hashTable size");
int hashTable_size = input.nextInt(); // Read hashTable_size from user
println("Enter num of hashing function");
int num_of_has = input.nextInt(); // Read num of hashing from user
hashTable T = new hashTable(hashTable_size);
println("hashTable before insert values\n");
T.printHashTable();
input.close();
int i = 0;
try {
input = new Scanner(data_to_insert);
String data;
while ((data = input.next()) != null) {
T.set(i, Integer.parseInt(data));
i++;
}
input.close();
} catch (Exception e) {
System.out.println("\nError: Reading, An error occurred while reading input files. Check your input type");
e.printStackTrace();
}
T.printHashTable();
}
}
这是我的输出
打印捕获错误
hashTable before insert values
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Error: Reading, An error occurred while reading input files. Check your input type
java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at main.main(main.java:36)
[1,2,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
这一行,
while ((data = input.next()) != null)
如果没有更多数据,Scanner 的 next() 方法不会 return null,而是抛出您得到的 NoSuchElementException。
改用它来检查更多数据:
while ((input.hasNext()) {
data = input.next();
//...
}
方法 hasNext() return如您所料是对还是错。
有人可以向我解释为什么我会收到 catch 错误吗?
我正在尝试从我传入 args 的文件中读取值(数字)。
而且我不太明白问题出在哪里。
import java.util.Scanner;// Import the Scanner class to read text files
import java.io.File;// Import the File class
import java.io.FileNotFoundException;// Import this class to handle errors
import java.io.*;
public class main extends GeneralMethods {
public static void main(String[] args) {
if (args.length <= 1 || args.length > 2) {
println("Error, usage: software must get two input files");
System.exit(1);
}
String file_name1 = args[0]; // data to insert
String file_name2 = args[1]; // data to check
File data_to_insert = new File(file_name1);
File data_to_check = new File(file_name2);
Scanner input = new Scanner(System.in); // Create a Scanner object
println("Enter hashTable size");
int hashTable_size = input.nextInt(); // Read hashTable_size from user
println("Enter num of hashing function");
int num_of_has = input.nextInt(); // Read num of hashing from user
hashTable T = new hashTable(hashTable_size);
println("hashTable before insert values\n");
T.printHashTable();
input.close();
int i = 0;
try {
input = new Scanner(data_to_insert);
String data;
while ((data = input.next()) != null) {
T.set(i, Integer.parseInt(data));
i++;
}
input.close();
} catch (Exception e) {
System.out.println("\nError: Reading, An error occurred while reading input files. Check your input type");
e.printStackTrace();
}
T.printHashTable();
}
}
这是我的输出
打印捕获错误
hashTable before insert values
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Error: Reading, An error occurred while reading input files. Check your input type
java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at main.main(main.java:36)
[1,2,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
这一行,
while ((data = input.next()) != null)
如果没有更多数据,Scanner 的 next() 方法不会 return null,而是抛出您得到的 NoSuchElementException。
改用它来检查更多数据:
while ((input.hasNext()) {
data = input.next();
//...
}
方法 hasNext() return如您所料是对还是错。