2012-01-12 35 views
6

Ho due variabili di stringa ticker e dettagli. Sto cercando di stampare le due stringhe in una riga. Semplicemente non avrebbe funzionato. Ho provato tanti modi diversi per farlo. Per escludere la possibilità di una stringa non inizializzata ho provato a stamparli in diverse linee ... questo funziona.Strano comportamento con stringhe java

Questo esempio funziona ... eccetto che l'output deve essere in una riga.

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

e l'uscita è:

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

Quando provo a mettere l'output in una linea in uno dei molti modi, ottengo solo il ticker ... la stringa dettaglio è semplicemente non stampato ... non per consolare o archiviare. Ecco alcuni frammenti esempio di codice che producono lo stesso risultato:

Tentativo 1:

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

Tentativo 2:

System.out.println(ticker+detail); 

Tentativo 3:

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

tentativo 4:

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

In tutti i tentativi di cui sopra, ottengo il seguente output ... come se la parte dettaglio viene ignorata:

GOLD 
BBL 
SI 

Quale potrebbe essere la causa di questi sintomi? C'è un modo per far stampare le due stringhe su una riga?

+1

Non vedo come sono correlate la prima uscita e l'ultima uscita. Non contengono la stessa cosa. Probabilmente non stai stampando quello che pensi di stampare. Prova a creare un SSCCE (http://sscce.org/). –

+0

sì, questo viene eseguito in tempo reale, quindi le uscite sono leggermente diverse, ma il formato è un ticker memorizzato in ticker ... un dettaglio particolare memorizzato nella variabile detail. – fodon

+1

Potresti mostrarci il contenuto attuale delle stringhe 'ticker' e' detail'? È possibile eseguire il debug del codice e ottenere il testo ... – everton

risposta

7

Questo potrebbe essere più adatto come un commento, ma poi non ho potuto scrivere lo snippet di codice che ho bisogno di scrivere.

Da dove provengono le stringhe? Provengono da un file che potrebbe contenere alcuni caratteri di controllo dispari? Se non stai creando la stringa tu stesso, dovresti esaminarli per cercare ritorni a capo verticali incorporati o altre stranezze. Fare qualcosa di simile per entrambe le detail e ticker stringhe:

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

e vedere se si ottiene nulla nella gamma non-ASCII.

+1

questo è un pensiero interessante ... farò il test. – fodon

+1

ci sono un mucchio di 0 ... Immagino che il sistema non cancelli gli 0 e presuma che termini la stringa. Lavorerò su questa idea. Esiste una normale libreria per sbarazzarsi degli zeri finali? – fodon

+0

ASCII NUL conta sicuramente come stranezza! Se riesci a eliminarli prima di creare gli oggetti Java String, scommetto che il tuo problema andrà via. –

2

potrebbe essere la prima stringa termina con un "\ n", la nuova riga (avanzamento riga) carattere ('\ u000A')

+0

Questa è la mia ipotesi, è per questo che gli ho chiesto il vero contenuto delle stringhe ... – everton