字符串数组为整数

时间:2015-07-15 20:56:50

标签: java

我有一个名为" w1_slave"的文本文件。如下:

3c 00 4b 46 ff ff 0d 10 16 : crc=16 YES

3c 00 4b 46 ff ff 0d 10 16 t=29937

从上面,我只需要提取整数29937,我的代码是:

public static void main(String[] args) throws IOException {
    // create token1
    String token1 = "";

    // create Scanner inFile1
    @SuppressWarnings("resource")
    // detect delimiter "," and " "
    Scanner w1Slave = new Scanner(new File("C:/Users/Hamid/Desktop/w1_slave.txt")).useDelimiter(",| ");

    List<String> temps = new ArrayList<String>();

    // while loop
    while (w1Slave.hasNext()) {
      // find next line
      token1 = w1Slave.next();
      temps.add(token1);
    }
    w1Slave.close();

    String[] tempsArray = temps.toArray(new String[0]);
    int tempsArrayLength = tempsArray.length - 1;
    System.out.println(tempsArray[tempsArrayLength]);

输出 t = 29937 。你能告诉我如何将 29937 提取为整数或双数吗?

4 个答案:

答案 0 :(得分:5)

最简单的方法是添加=作为分隔符 - 替换

.useDelimiter(",| ");

.useDelimiter(",|= ");

要将其转换为double,请使用

double value = 0;
try {
    value = Double.parseDouble(temps.get(temps.size() - 1));
} catch (NumberFormatException e) {
    // not a number - do something
}

您不需要将列表转换为数组 - 您可以删除代码的这一部分:

String[] tempsArray = temps.toArray(new String[0]);
int tempsArrayLength = tempsArray.length - 1;
System.out.println(tempsArray[tempsArrayLength]);

答案 1 :(得分:1)

我的建议是使用子字符串函数。

String strNumber = tempsArray[tempsArrayLength].substring(2);

然后使用parseInt获取整数值。

int nNumber = Integer.parseInt(strNumber);

答案 2 :(得分:1)

你非常接近你的代码。我认为你需要像这样修改你的代码

public static void main(String[] args) throws IOException {
        // create token1
        String token1 = "";

        // create Scanner inFile1
        @SuppressWarnings("resource")
        // detect delimiter "," and " "
        Scanner w1Slave = new Scanner(new File(C:/Users/Hamid/Desktop/w1_slave.txt")).useDelimiter(",| ");

        List<String> temps = new ArrayList<String>();

        // while loop
        while (w1Slave.hasNext()) {
          // find next line
          token1 = w1Slave.next();
          temps.add(token1);
        }
        w1Slave.close();

        String[] tempsArray = temps.toArray(new String[0]);
        int tempsArrayLength = tempsArray.length - 1;
        String str[]=tempsArray[tempsArrayLength].split("=");
        // System.out.println(tempsArray[tempsArrayLength]);
        int i=Integer.parseInt(str[1]);
        System.out.println(i);

}

答案 3 :(得分:0)

使用parseInt或parseDouble函数:

int number = Integer.parseInt(tempsArray[tempsArrayLength]);

double number = Double.parseDouble(tempsArray[tempsArrayLength]);