2012-01-12 34 views
6

İki dize değişkeni değişken ve ayrıntı var. İki dizeyi bir satırda yazdırmaya çalışıyorum. Sadece işe yaramazdı. Bunu yapmak için çok farklı yollar denedim. Başlatılmamış bir dizginin olasılığını dışlamak için onları farklı satırlarda yazdırmayı denedim ... bu iş.Java dizeleriyle garip davranış

Bu örnek, çıktının bir satırda olması gerektiği dışında çalışır.

  System.out.println(ticker); 
      System.out.println(detail); 

Ve çıkış: Ben birçok yollardan herhangi biri hattına çıktı koymak çalıştığınızda

IWM 
|0#0.0|0#0.0|0#-4252#386| 
GLD 
|0#0.0|0#0.0|0#-4704#818| 

, sadece senedi almak ... detay dize sadece basılı değil ... konsola veya dosyaya değil.

girişimi 1: Burada aynı sonucu bazı örnek kod parçacıkları olan

System.out.println(ticker.concat(detail)); 

girişimi 2:

System.out.println(ticker+detail); 

girişimi 3:

StringBuffer sb = new StringBuffer(); 
sb.append(ticker); 
sb.append(detail); 
System.out.print(sb.toString()); 

girişimi 4:

System.out.print(ticker); 
System.out.println(detail); 
Bu belirtileri neden olabilecek ne

GOLD 
BBL 
SI 

: detay kısmı göz ardı edilir sanki her şeyden girişimlerde

, ben ... şu çıktıyı almak? Bir satırda basılan iki dizeyi almanın bir yolu var mı?

+1

İlk çıkışın ve son çıkışın nasıl ilişkili olduğunu anlamıyorum. Aynı şeyi içermiyorlar. Muhtemelen yazdırdığınızı düşündüğünüz şeyi yazdırmıyorsunuzdur. Bir SSCCE yapmayı deneyin (http://sscce.org/). –

+0

evet, bu gerçek zamanlı olarak çalıştırılır, bu yüzden çıkışlar biraz farklıdır, ancak format, ticker ile saklanan bir miktardır ... detay değişkeninde saklanan bir detay. – fodon

+1

Bize "Ticker" ve "detail" Strings'in gerçek içeriğini gösterebilir misiniz? Kodu ayıklayabilir ve metni alabilirsin ... – everton

cevap

7

bir "\ n", yeni satır (satır besleme) karakteri ('\ u000A') ile sona erer olabilir, ama sonra yazamadım Kod parçacığı yazmam gerek.

Dizeler nereden geliyor? Bazı garip kontrol karakterleri içerebilecek bir dosyadan mı? Eğer String'i kendiniz yaratmıyorsanız, onları gömülü dikey taşıma iadelerini veya diğer gariplikleri aramaya davet etmelisiniz.

for (int i=0; i<detail.length(); ++i) 
    System.out.println((int) detail.charAt(i)); 

ve ASCII olmayan aralığında şey elde olmadığını görmek: Her iki detail ve ticker Strings için böyle bir şey yapın.

+1

Bu ilginç bir düşünce ... Testi yapacağım. – fodon

+1

0s bir demet var ... Sistem 0s silmez ve dizeyi sonlandıran varsayar sanırım. Bu fikir üzerinde çalışacağım. Sondaki sıfırlardan kurtulmak için standart bir kütüphane rutini var mı? – fodon

+0

ASCII NUL kesinlikle tuhaflık olarak sayılır! Java String nesnelerini oluşturmadan önce bunları kapatabilirseniz, probleminizin ortadan kalkacağına eminim. –

2

ilk dize Bu yorum olarak daha iyi olabilir

+0

Bu benim tahminim, bu yüzden ona dizelerin gerçek içeriğini sordum ... – everton