我有一个名为" 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 提取为整数或双数吗?
答案 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]);