在将字符串解析为整数数组后,函数convertStringArray不返回整数数组。 而是返回一个null数组。该函数应将字符串转换为整数并返回readCodefile函数。 readCode文件函数将一个整数数组返回给main函数。 需要帮助。
package subsetsum;
import java.util.Scanner;
import java.io.*;
class filehandling {
String [] codes = new String[100000];
int i = 0;
private Scanner readCodes;
public int[] readCodesFile() {
try {
readCodes = new Scanner(new File("uk.txt")); //Reading File
codes[i] = readCodes.nextLine();
//System.out.println(codes[i]);
i++;
while(readCodes.hasNext()) {
codes[i] = readCodes.nextLine();
//System.out.println(codes[i]);
i++;
}
}
catch (Exception e) {
System.out.println("Could not locate the data file!");
}
int intCode1 [] = convertStringArray(codes);
return intCode1;
}
public int[] readCodesFile1() {
try {
readCodes = new Scanner(new File("uk2`enter code here`.txt"));
codes[i] = readCodes.nextLine();
//System.out.println(codes[i]);
i++;
while(readCodes.hasNext()) {
codes[i] = readCodes.nextLine();
//System.out.println(codes[i]);
i++;
}
}
catch (Exception e) {
System.out.println("Could not locate the data file!");
}
int intCode2 [] = convertStringArray(codes);
return intCode2; // Here is where the error takes place
}
public int[] convertStringArray(String[] codes) {
int[] intCodes = new int[codes.length];
int count = 0;
for (String string : codes) {
intCodes[count] = Integer.parseInt(string);
//System.out.println(intCodes[count]);
count++;
}
//System.out.println(intCodes[i]);
return intCodes;
}
}
答案 0 :(得分:0)
看起来您的代码最有可能抛出NumberFormatException
,因为您的convertStringArray
方法传递了100000
字符串的字符串数组,所以如果你实际上没有从输入文件中读取100000个字符串,codes
数组中的某些字符串将保持null
,而parseInt
将无法解析它们。
您应该使用ArrayList而不是数组来从文件中读取字符串,除非您知道要在输入文件中找到的字符串的确切数量。
答案 1 :(得分:0)
convertStringArray方法可能没错。但是你不应该创建具有大的固定大小的字符串数组并迭代它。尝试这样的事情:
package com.company;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static int[] convertStringArray(List<String> codes) {
int[] intCodes = new int[codes.size()];
int count = 0;
for (String string : codes) {
intCodes[count] = Integer.parseInt(string);
count++;
}
return intCodes;
}
public static List<String> readStrings() {
List<String> out = new ArrayList<String>();
out.add("1");
out.add("2");
out.add("3");
return out;
}
public static void main(String[] args) {
int[] intCodes = convertStringArray(readStrings());
for (int intCode : intCodes) {
System.out.println(intCode);
}
}
}