JAVA:如何将String ArrayList转换为Integer Arraylist?

时间:2015-08-14 17:09:44

标签: java arrays arraylist

我的问题是 - 如何将String ArrayList转换为Integer ArrayList?

我的°背后有EX: 352°号码 // Read text in txt file. Scanner ReadFile = new Scanner(new File("F:\\test.txt")); // Creates an arraylist named ArrayString ArrayList<String> ArrayString = new ArrayList<String>(); // This will add the text of the txt file to the arraylist. while (ReadFile.hasNextLine()) { ArrayString.add(ReadFile.nextLine()); } ReadFile.close(); // Displays the arraystring. System.out.println(ArrayString); 。如果我将它们放入Integer ArrayList中,它就不会识别这些数字。为了解决这个问题,我将它们放入String ArrayList中,然后识别它们。

我想将String Arraylist转换回Integer Arraylist。那我该如何实现呢?

这是我到目前为止的代码。我想将ArrayString转换为Int Arraylist。

SELECT
    PIDM, LEVL_CODE,
    round(sum(TOTAL_POINTS) / sum(TOTAL_CREDITS), 2) AS GPA, 
    sum(TOTAL_POINTS) AS TOTAL_POINTS, sum(TOTAL_CREDITS) AS TOTAL_CREDITS
FROM (
    SELECT 
        SFRSTCR.SFRSTCR_PIDM AS PIDM, SHRGRDE_LEVL_CODE AS LEVL_CODE,
        sum(SHRGRDE.SHRGRDE_QUALITY_POINTS * SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_POINTS,
        sum(SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_CREDITS
    FROM
        SFRSTCR INNER JOIN SHRGRDE ON SFRSTCR.SFRSTCR_GRDE_CODE = SHRGRDE.SHRGRDE_CODE
    WHERE
        SHRGRDE_GPA_IND = 'Y' AND SFRSTCR.SFRSTCR_RSTS_CODE IN ('RE', 'RW', 'RR')
    GROUP BY
        SFRSTCR.SFRSTCR_PIDM, SHRGRDE_LEVL_CODE
  ) GT
  WHERE TOTAL_CREDITS > 0 -- Prevent x/0 errors
  GROUP BY PIDM, LEVL_CODE

提前致谢

PS:对不起,如果我不完全清楚,但英语不是我的主要语言。我也是Java的新手。

2 个答案:

答案 0 :(得分:2)

您可以使用°替换您要忽略的任何字符(在本例中为String.replaceAll):

 "somestring°".replaceAll("°",""); // gives "sometring"

或者您可以使用String.substring删除最后一个字符:

"somestring°".substring(0, "somestring".length() - 1); // gives "somestring"

其中一个应该适合您的情况。

现在剩下的就是使用Integer.parseInt即时解析输入:

ArrayList<Integer> arrayInts = new ArrayList<Integer>();

while (ReadFile.hasNextLine()) {
    String input = ReadFile.nextLine();
    try {
        // try and parse a number from the input. Removes trailing `°`
        arrayInts.add(Integer.parseInt(input.replaceAll("°","")));
    } catch (NumberFormatException nfe){
        System.err.println("'" + input + "' is not a number!");
    }
}

您可以将自己的处理添加到输入不是实际数字的情况。

答案 1 :(得分:1)

您必须创建一个使用Integer包装类键入的ArrayList的新实例,并为其提供与String列表相同大小的缓冲区:

List<Integer> myList = new ArrayList<>(ArrayString.size());

然后迭代遍历Arraystring,通过在包装类中使用解析方法将值从一个赋值给另一个

for (int i = 0; i < ArrayString.size(); i++) {
    myList.add(Integer.parseInt(ArrayString.get(i)));

}