मेरे पास नाम और अंतिम नाम के साथ एक txt फ़ाइल है और मुझे इससे उपयोगकर्ता बनाने की आवश्यकता है। उदाहरण के लिए, मेरे पास txt मान इस तरह हैं:

Beckham, David
Lopez Vega, Maria
Graham Daniels, Luke

समस्या यह है कि उपयोगकर्ता केवल पहले अंतिम नाम और नाम के साथ बनाए जाते हैं (यदि यह है तो दूसरे अंतिम नाम को अनदेखा कर दें)। मुझे नहीं पता कि उस जानकारी को कैसे लिया जाए और इसके साथ एक वस्तु कैसे बनाई जाए। वस्तु वर्ग सरल है:

public class Student {
    private String name;
    private String lastName;

    public Student(String name, String lastName) {
        this.name= name;
        this.lastName= lastName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getlastName() {
        return lastName;
    }

    public void setlastName(String lastName) {
        this.lastName = lastName;
    }
    

मैंने यह कोशिश की है:

Scanner input = new Scanner(new File("Students.txt"));

List<Student> students= new ArrayList<Student>();
while(input.hasNext()) {
    String name= input.next();
    String lastName = input.next();

    Student student= new Student(name, lastName);
    students.add(student)
}

    

लेकिन यह काम नहीं करता है। मैं थोड़ी देर के लिए कोशिश कर रहा हूं लेकिन मुझे फ़ाइल से केवल वह जानकारी नहीं मिल सकती जो मुझे चाहिए।

2
MadMax 19 पद 2020, 23:45
String कक्षा का split() तरीका सीखना आपके लिए फायदेमंद होगा..
 – 
PM 77-1
19 पद 2020, 23:52
2
बेहतर आउटपुट के लिए अपने Students.java DTO क्लास के अंत में निम्नलिखित कोड जोड़ें। @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", lastName='" + lastName + '\'' + '}'; }
 – 
nanomader
19 पद 2020, 23:53
@ PM77-1 मैं अभी इसके बारे में पढ़ रहा हूँ, धन्यवाद :)
 – 
MadMax
20 पद 2020, 00:06
1
मैंने इसे अभी जोड़ा, धन्यवाद :)
 – 
MadMax
20 पद 2020, 00:06

1 उत्तर

सबसे बढ़िया उत्तर

मैं एक पूरी लाइन पढ़ूंगा और splits पर कॉल करके इसे पार्स करूंगा:

Scanner input = new Scanner(new File("Students.txt"));

List<Student> students = new ArrayList<Student>();
while(input.hasNextLine()) {
    String line = input.nextLine();
    String[] splitLine = line.split(", ");

    String name = splitLine[1];
    
    String[] splitLastName = splitLine[0].split(" ");
    String lastName = splitLastName[0];

    Student student = new Student(name, lastName);
    students.add(student);
}
3
Mureinik 19 पद 2020, 23:54
1
"इनपुट.स्प्लिट(", ");" बदलें इसे काम करने के लिए "line.split" के लिए। और अपने कोड की अंतिम पंक्ति पर अर्धविराम जोड़ें।
 – 
nanomader
19 पद 2020, 23:52
2
अच्छा कैच WRT line बनाम input। लापता अर्धविराम ओपी से कॉपी-एंड-बग किया गया था, लेकिन यह भी एक अच्छी पकड़ है, धन्यवाद! संपादित और तय।
 – 
Mureinik
19 पद 2020, 23:54