Monday 15 June 2015

java - Reading from text file and storing contents in separate arrays -


मेरे पास एक टेक्स्ट फाइल है जिसमें

  r0, 0.5, 1 r1, 0.6, - 1 r2, 0.2, 1   

मुझे फ़ाइल पढ़ना और प्रत्येक स्तंभ को जावा में एक अलग सरणी में संग्रहीत करना चाहता हूं। यह कोड मैं लिख रहा हूं। मुझे रिकॉर्ड में केवल कचरा मूल्य मिल रहा है इसके अलावा, मैं फ्लोट मूल्यों को पढ़ने में सक्षम नहीं हूं। कृपया मुझे बताएं कि इसे कैसे ठीक करें।

  सार्वजनिक वर्ग मॉडल {निजी स्ट्रिंग मॉडलनाम; निजी स्ट्रिंग [] रिकॉर्ड; निजी इन्ट [] लक्ष्य; निजी फ्लोट [] स्कोर; सार्वजनिक मॉडल (स्ट्रिंग नेम_मोडेल, स्ट्रिंग पथ) नंबरफ़ॉर्मैट एक्सपेशेशन फेंकता है, IOException {this.modelname = path + name_model; Println (this.modelname); बफ़्टेडरडर बफर रीडर = नया बफ़्टेड रीडर (नया फ़्लेमरिडर (पथ + नाम_मॉडेल)); स्ट्रिंग लाइन = नल; Int t = 0; जबकि ((रेखा = बफर रीडर.रेडलाइन ())! = नल {{System.out.println (लाइन); // स्ट्रिंग [] strar = line.split (","); // स्ट्रिंग [] strar = line.split ("\\ s *, \\ s *"); Int k = 1; के लिए (स्ट्रिंग भाग: रेखा.split (",")) {if (k == 1) {System.out.println (part.trim ()); This.records [टी] = part.trim (); } यदि (k == 3) this.targets [t] = Integer.valueOf (part.trim ()); यदि (कश्मीर == 2) this.scores [t] = फ्लोट। पर्सफ्लोट (part.trim ()); K = k + 1; } System.out.println (this.records [t] + "" + this.targets [t] + "" + this.scores [t]); टी = t + 1; }} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता है, IOException {String s1, s2, s3; S1 = "./direc/"; S2 = "file1.txt"; S3 = s1 + s2; Println (S3); नया मॉडल (एस 2, एस 1); }   

}

आप पार्सिंग को आसान बना सकते हैं आप आंतरिक लूप से दूर कर सकते हैं और

  स्ट्रिंग [] भागों = line.split (",") के रूप में ट्रिम करने से बच सकते हैं; यह। रिकॉर्ड्स [टी] = पार्ट [0]; This.scores [t] = फ्लोट। पीआरएसएफ़्लॉट (भाग [1]); This.targets [t] = पूर्णांक। पैरासेन्ट (भाग [2]);   

मैं मान रहा हूँ कि आप दूसरे कॉमा को यहां रखना भूल गए

  r1, 0.6, -1   

और, जब से आप एक आदिम int [] का उपयोग कर रहे हैं Integer.parseInt () के बजाय Integer.valueOf () (जो एक देता है पूर्णांक आवरण) अनावश्यक अनबॉक्सिंग से बचने के लिए।

संपादित करें :
आपको अपने सभी एरेसेस को प्रारंभ करने की आवश्यकता है जैसे <प्री> निजी स्ट्रिंग [] रिकॉर्ड = नया स्ट्रिंग [100]; // प्रारंभिक मिसाइल है!

चूंकि, आपके मामले में सरणी का आकार आपके इनपुट डेटा फ़ाइल में लाइनों की संख्या पर निर्भर करता है, इसे गतिशील होने की आवश्यकता होती है। एक सरणी सूची पर स्विच करने पर विचार करें जो गतिशील रूप से बढ़ेगा।

  निजी सूची & lt; स्ट्रिंग & gt; रिकॉर्ड = नए अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); निजी सूची & lt; पूर्णांक & gt; लक्ष्य = नया अर्रेलिस्ट & lt; पूर्णांक & gt; (); निजी सूची & lt; float & gt; स्कोर = नया अर्रेलिस्ट & lt; फ्लोट & gt; ();   

चूंकि, आपको संग्रह का उपयोग करने के लिए आवरण प्रकारों का उपयोग करने की आवश्यकता है; वापस valueOf () विधियों पर स्विच करें।

  स्ट्रिंग [] भागों = line.split (","); this.records.add (भागों [0]); this.scores.add (Float.valueOf (भागों [1])); this.targets.add (Integer.valueOf (भागों [2]));    

No comments:

Post a Comment