将字符串数组转换为整数数组后,该函数返回一个空数组
After converting string array into integer array, the function is returning a null array
函数convertStringArray 不return 将字符串解析为整数数组后的整数数组。
空数组改为 returned。该函数应将字符串转换为整数,并将 return 转换为 readCodefile 函数。
readCode文件函数return一个整型数组传给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;
}
}
看起来你的代码最有可能抛出一个 NumberFormatException
,因为你的 convertStringArray
方法传递了一个 100000
字符串的字符串数组,所以如果你实际上没有从输入文件中读取 100000 个字符串,codes
数组中的一些字符串将保留 null
,并且 parseInt
将无法解析它们。
您可能应该使用 ArrayList 而不是数组来从文件中读取字符串,除非您知道要在输入文件中找到的字符串的确切数量。
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);
}
}
}
函数convertStringArray 不return 将字符串解析为整数数组后的整数数组。 空数组改为 returned。该函数应将字符串转换为整数,并将 return 转换为 readCodefile 函数。 readCode文件函数return一个整型数组传给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;
}
}
看起来你的代码最有可能抛出一个 NumberFormatException
,因为你的 convertStringArray
方法传递了一个 100000
字符串的字符串数组,所以如果你实际上没有从输入文件中读取 100000 个字符串,codes
数组中的一些字符串将保留 null
,并且 parseInt
将无法解析它们。
您可能应该使用 ArrayList 而不是数组来从文件中读取字符串,除非您知道要在输入文件中找到的字符串的确切数量。
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);
}
}
}