16. januar 2008 - 13:19
Der er
5 kommentarer og 1 løsning
problemer med while
Hi, er der en som kan finde min tanke-fejl i følgende code? ... package testing.while; public class TestWhile { public static void main (String[] args) { try { System.out.println( "return value: "+TestWhile.doLoop( "testValue" ) ); } catch (Exception e) { System.out.println(e.getMessage()); } } public static String doLoop(String data) { try { String responseString = ""; int counter = 0; while( true ) { String nextString = null; if (counter == 0) { counter++; nextString = data+counter; } else { nextString = null; } if ( nextString.equals("") || nextString==null ) { System.out.println( "before break: "+responseString ); break; } responseString = responseString+nextString; System.out.println( "new String: "+responseString ); } return responseString; } catch(Exception e) { return e.getMessage(); } } } ... output: new String: testValue1 return value: null Jeg vil gerne have programmet til, at den også skriver testValue1 ind i return. Hvorfor laver programmet ikke noget System.out.println inden for if( nextString.equals("") || nextString==null ) ? Hvorfor er responseString efter while-loop' null? med venlig hilsen KernelX
Annonceindlæg fra Pointsharp
16. januar 2008 - 13:30
#2
Med denne kode: ... if (counter == 0) { counter++; nextString = data+counter; } else { nextString = null; } if ( nextString.equals("") || nextString==null ) { System.out.println( "before break: "+responseString ); break; } ... vil din while kun køre to gange: 1. counter er 0 og den tælles derfor op til 1. 2. counter er 1 og derfor sættes nextString og derfor breakes den. Hvis den kun køre en gang - hvorfor så overhovedet have en while? I øvrigt sakl denne: if ( nextString.equals("") || nextString==null ) { rettes til: if ( nextString==null || nextString.equals("") ) { Tjek altid på om den er null før at du begynder at bruge den som noget som ikke er null. Ellers får du en null-exception.
16. januar 2008 - 13:36
#3
ok, mange tak! husk at skrive et eller andet som svar. -Hvis den kun køre en gang - hvorfor så overhovedet have en while? det er kun i dette eksempel sådan. i selve programmet som skal laves, er nextString = bufferedReader.readLine() osv. men den komplette code ville være alt for lang - og jeg er bange for at ingen vil svare på spørgsmål, hvis de først skal arbejde sig igennem kilometerlang code, hvis selve problet kan pakkes i et simpelt program.
16. januar 2008 - 13:39
#5
nextString.equals("") vil give dig en nullpointer exception når nextString er null. Derfor test på null først. Jeg samler slet ikke på point, tak. Jeg synes det er fint du kommer med et eksempel, der er kogt ned til det essentielle ;)