将字符串数组转换为整数数组后,该函数返回一个空数组

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);
      }

  }
}