我是Java编程的新手。我正在准备一项任务,我需要一些帮助我的代码。
说明说我需要在numberOfRows()
和convertFileArray()
方法中处理异常。练习包括从csv文件读取,将文件转换为多维数组,在屏幕上打印数组。我的程序运行正常,我唯一的问题是我无法弄清楚我可以在这两种方法中处理哪些异常。
我写了一般的例外只是因为我不知道该怎么做。任何建议都会非常有帮助。另外我只发布我需要放置try-catch块的类。 提前谢谢。
这是我的代码:
import java.io.*;
import java.nio.file.*;
import java.util.StringTokenizer;
public class ReadFiles {
int rows = 0;
int columns = 0;
String s = null;
private String[][] arrayValues;
Path filePath;
public ReadFiles(String name) {
filePath = Paths.get("C:\\stocks\\" + name); //newMSFT.csv
System.out.println("Path for file entered " + filePath.toString());
}
public boolean fileExists() {
if(Files.exists(filePath))
return true;
else
return false;
}
public int numberOfRows() {
try {
InputStream data = new BufferedInputStream(
Files.newInputStream(filePath));
BufferedReader reader = new BufferedReader(
new InputStreamReader(data));
s = reader.readLine();
while(s != null) {
rows++;
s = reader.readLine();
}
}
catch(Exception e) {
System.out.println("Message: " + e);
}
return rows;
}
public void convertFileArray() {
try {
InputStream data = new BufferedInputStream(
Files.newInputStream(filePath));
BufferedReader reader = new BufferedReader(
new InputStreamReader(data));
s = reader.readLine();
StringTokenizer z = new StringTokenizer(s, ",");
columns = z.countTokens();
arrayValues = new String[rows][columns];
for(int x = 0; x < rows; x++) {
z = new StringTokenizer(s, ",");
//when there are still more tokens, place it in the array:
int y = 0;
while(z.hasMoreTokens()) {
arrayValues[x][y] = z.nextToken();
y++;
}
s = reader.readLine();
}
System.out.println("An array was created and has " +
rows + " rows and " + columns + " columns.");
}
catch(Exception e) {
System.out.println("Message: " + e);
e.printStackTrace();
}
}
public void printArray() {
System.out.println("The data from the array is >> ");
for(int a = 0; a < rows; a++) {
String output = null;
for(int b = 0; b < columns; b++) {
System.out.print(arrayValues[a][b] + " ");
}
System.out.println();
}
}
public String[][] getArrayValues() {
return arrayValues;
}
}
答案 0 :(得分:0)
你正在做的大部分事情都是投掷IOException的事情。
答案 1 :(得分:0)
如果您使用像eclipse
这样的IDE,那么它会显示需要处理的异常。
在您的计划中,IOException
和convertFileArray()
numberOfRows()
答案 2 :(得分:0)
您的readLine方法会抛出IOException
。
try {
s = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
并且Files.newInputStream(filePath)会抛出以下异常:
IllegalArgumentException
- 如果指定了无效的选项组合UnsupportedOperationException
- 如果指定了不受支持的选项IOException
- 如果发生I / O错误SecurityException
- 如果是默认提供程序,并且安装了安全管理器,则会调用checkRead方法来检查对该文件的读访问权。所以它取决于你想要处理的异常和异常。