2016-04-03 16 views
3

dikkate bir dosyadan birden fazla nesne oku A ve B'nin birkaçJava i 2 farklı sınıflar</p> <pre><code>public class A { String name; int A1; int A2; } </code></pre> <p>ve diğer sınıf

dosya

3 
"Jim"; 1;2 
"jef";3;5 
"Peter";6;7 
"aa";1;1 
"bb";2;3 
"cc";3;4 
gibi olabilir

Sen (dosyanın başında) sınıf sorudur

, nasıl okuyabilir B. ve ayrı Sınıf A ve geri kalan nesnelerin olan nesneler sayısı olduğunu düşünebiliriz dosyadaki tüm nesneler?

Ana sorun, dosyadan ilk int nasıl okuyacağımı bilmiyorum. Ne yaptım

 InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
ObjectInputStream ois = new ObjectInputStream(inputStream);  
int i = ois.readInt(); 
    ois.close(); 

ama bana bir hata verir:

Bir metin dosyası okuyorsanız
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 350A4261 
+0

ile ayrıştırmanız gerekir. Sorunuz çok adımlı bir sorudur ve adımlar şunlardır: 1) bir dosyadan satırları okuma, 2 ilk x A türünde okunacak döngüler kullanarak, sonra Kalan satırları okumak için bir süre döngü 3) her satırı bir A veya B türüne dönüştürmek. Yani .... tam olarak ** burada sıkıştın mı? Ne denediğini göster lütfen. –

+0

@HovercraftFullOfEels –

cevap

0

The main problem is that i don't know how can i read the first int from the file.

değil, bir veri dosyası, bu yüzden readInt() kullanmayın. Bir BufferedReader veya benim önerim - bir Scanner nesnesi kullanın.

InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
Scanner scanner = new Scanner(inputFileStream); 
int int = scanner.nextInt(); // get that first int 
scanner.nextLine(); // go to the next line (swallow the end-of-line token) 
//..... 

sonra satırları okumak için aynı Scanner kullanmaktır. senin işleme olasılığı ; bölünmüş ve ihtiyacınız eşyalarla dize dizisi oluşturmak için dizesinin split(...) yöntemini kullanır

while (scanner.hasNextLine) { 
    String line = scanner.nextLine(); 
    // here process the line into an A or B depending on the results of a counter variable 
    // then increment the counter here 
} 

Not kullanın. Daha sonra int ile ilgili öğeleri Integer.parseInt(...)

+0

sorumu düzenledim ama cisimlere gittiğimde tekrar streaminput değiştirmem gerekiyor. doğru mu? –

+0

@KamyarParastesh: heck no. Aynı Tarayıcıyı kullanın. Yukarıdaki düzenlemeye bakın. Bir şey denemek ve ne olacağını görmek isteyeceksiniz. –

+0

@KamyarParastesh: Başka sorunuz var mı? –

İlgili konular