Java 从文本文件读取并存储在对象中
这是文本文件,我想读取文本文件并将名称、年龄和地址存储到对象中。我的程序有问题,对不起,我是java新手 姓名:姓名1 年龄:20 地址:kokrajhar 我预计结果如下: StudenInfo[name=name1,age=20,address=kokrajhar] StudentInfo.javaJava 从文本文件读取并存储在对象中,java,Java,这是文本文件,我想读取文本文件并将名称、年龄和地址存储到对象中。我的程序有问题,对不起,我是java新手 姓名:姓名1 年龄:20 地址:kokrajhar 我预计结果如下: StudenInfo[name=name1,age=20,address=kokrajhar] StudentInfo.java public class StudenInfo{ private static String name; private static Integer age; p
public class StudenInfo{
private static String name;
private static Integer age;
private static String address;
public String getName() {
return name;
}
public static void setName(String name) {
StudenInfo.name = name;
}
public static Integer getAge() {
return age;
}
public static void setAge(Integer age) {
StudenInfo.age = age;
}
public static String getAddress() {
return address;
}
public static void setAddress(String address) {
StudenInfo.address = address;
}
@Override
public String toString() {
return "StudenInfo [name=" + name + ", age=" +age +", address=" + address +"]";
}
}
class test {
public static void main(String[] args) throws Exception{
File f1 = new File("names.txt");
Scanner scanner = new Scanner(f1);
String nextLine= scanner.nextLine();
String[] stuinfo= nextLine.split(":");
scanner.close();
String strname=stuinfo[0];
String strage= stuinfo[1];
String straddress= stuinfo[2];
StudenInfo students=new StudenInfo();
students.setName(strname);
int intage = Integer.parseInt(strage);
students.setAge(intage);
students.setAddress(straddress);
System.out.println(students.toString());
}
Test.java
public class StudenInfo{
private static String name;
private static Integer age;
private static String address;
public String getName() {
return name;
}
public static void setName(String name) {
StudenInfo.name = name;
}
public static Integer getAge() {
return age;
}
public static void setAge(Integer age) {
StudenInfo.age = age;
}
public static String getAddress() {
return address;
}
public static void setAddress(String address) {
StudenInfo.address = address;
}
@Override
public String toString() {
return "StudenInfo [name=" + name + ", age=" +age +", address=" + address +"]";
}
}
class test {
public static void main(String[] args) throws Exception{
File f1 = new File("names.txt");
Scanner scanner = new Scanner(f1);
String nextLine= scanner.nextLine();
String[] stuinfo= nextLine.split(":");
scanner.close();
String strname=stuinfo[0];
String strage= stuinfo[1];
String straddress= stuinfo[2];
StudenInfo students=new StudenInfo();
students.setName(strname);
int intage = Integer.parseInt(strage);
students.setAge(intage);
students.setAddress(straddress);
System.out.println(students.toString());
}
首先,正如前面的回答所说,不应该使用静态变量,因为它会修改所有对象的值,最终会得到相同的值 第二,如果您总是可以指望信息以这种方式格式化,那么您应该使用正则表达式,因为您当前所做的拆分只会导致更多的bug 下面是一个如何使用它的示例:
Pattern pattern = Pattern.compile("\\w*\\s:\\s\\w*"); // this will split on groups of information, like name : name1
List<String> studentInfo = new ArrayList();
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
studentInfo.add(matcher.group());
}
studentInfo.get(0).substring(studentInfo.get(0).trim().lastIndexOf(" ")); // this is the name
studentInfo.get(1).substring(studentInfo.get(1).trim().lastIndexOf(" ")); // this is the age
studentInfo.get(2).substring(studentInfo.get(2).trim().lastIndexOf(" ")); // this is the address
Pattern=Pattern.compile(“\\w*\\s:\\s\\w*”);//这将根据信息组进行拆分,如name:name1
List studentInfo=new ArrayList();
匹配器匹配器=模式匹配器(测试);
while(matcher.find()){
添加(matcher.group());
}
studentInfo.get(0).substring(studentInfo.get(0).trim().lastIndexOf(“”);//这就是名字
studentInfo.get(1).子字符串(studentInfo.get(1).trim().lastIndexOf(“”);//这就是时代
studentInfo.get(2).子字符串(studentInfo.get(2).trim().lastIndexOf(“”);//这是地址
寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请看:什么不起作用?嘿,欢迎来到Stackoverflow,请阅读上面的建议链接,然后自由编辑您的问题,谢谢。。实际输出是什么,什么不起作用,如果你得到一些,错误是什么,等等:)