java字符串到整数错误
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
File f = new File("C:/Users/asus/IdeaProjects/whatt/src/food.txt");
Scanner sc = new Scanner(f);
List<Person> people = new ArrayList<Person>();
while(sc.hasNextLine()){
String line = sc.nextLine();
String[] details = line.split("\t");
int serial = Integer.parseInt(details[0]);
String name = details[1];
int age = Integer.parseInt(details[2]);
Person p = new Person(serial, name, age);
people.add(p);
}
for(Person p: people){
System.out.println(p.toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
class Person{
private int serial;
private String name;
private int age;
public Person(int serial, String name, int age){
this.serial = serial;
this.setName(name);
this.age = age;
}
public int getserial() {
return serial;
}
public void setserial(int serial) {
this.serial = serial;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return this.serial + " " + this.name + " " + this.age;
}
}
1001埃尔马87
1002 muz 98
1003鳄梨221
1004黑莓64
1005 armut 79
1006 ayva 91
1007埃里克65
我有这样的txt文件。它包含2个整数和1个字符串。我试图将这些字符串转换为整数,但“1001”总是给出java。lang.NumberFormatException错误。我能做些什么来解决这个问题
# 1 楼答案
与其依赖于\t、\n或\r,不如试试java正则表达式。这将是一个更好的方法来提取你的数字
例如:
(^[0-9]*)\\s*[Aa-zZ]*\\s*([0-9]*)
第一个
(^[0-9]*)
捕获第一个字符串 第二个([0-9]*)
捕获第二个字符串它会打印出来:
这就是正则表达式的用途:识别并提取字符串的一部分
# 2 楼答案
问题是
String.split()
需要一个正则表达式。所以它实际上并不是在标签上拆分。试着用\\t
这个参数来避开反斜杠。这将允许正则表达式正确解析