pętla, continue
Ostatnio zmodyfikowano 2018-04-15 18:03
Luq |
» 2018-04-15 16:20:49 Dostajesz NoSuchElementException, bo pewnie zamykasz Scanner. Scanner zamyka podległy strumień, czyli w tym przypadku System.in, więc kolejne próby odczytania czegoś z tego strumienia kończą się tym wyjątkiem. Poza tym tak już @pekfos pisał zastępowanie pętli rekurencją jest w tym przypadku bezsensowne. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 16:38:01 Jak chce używać metod to musze użyc rekurencji bo inaczej musiałbym wszystko w kalkulatorze wczytywać a chciałem w metodzie setLine(). Poza tym nie wiem jaki warunek musiałaby mieć pętla i jak ma wyglądać. Zrobiłem coś takiego: try { Scanner skan = new Scanner( System.in ); String linia = skan.nextLine(); double wynik = Zad2.kalkulator( linia ); System.out.print( "= " + wynik ); skan.close(); } catch( Exception x ) { System.err.println( errorMessage ); Zad2.setLine(); }
i działa! Problem jest po zbyt wielu próbach wpisania złych wartości. Wtedy po wpisaniu dobrych dostaje z 50 komunikatów errorMessage i błąd java.lang.StackOverflowError at sun.nio.cs.SingleByte.withResult(Unknown Source) at sun.nio.cs.SingleByte.access$000(Unknown Source) at sun.nio.cs.SingleByte$Decoder.decodeArrayLoop(Unknown Source) at sun.nio.cs.SingleByte$Decoder.decodeLoop(Unknown Source) at java.nio.charset.CharsetDecoder.decode(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.Reader.read(Unknown Source) at java.util.Scanner.readInput(Unknown Source) at java.util.Scanner.findWithinHorizon(Unknown Source) at java.util.Scanner.nextLine(Unknown Source) |
|
|
pekfos |
» 2018-04-15 16:47:02 Zastępowanie pętli rekurencją nie jest poprawne. |
|
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 16:55:28 To jaki ma być warunek? Wykonuj tak długo dopóki wszystko jest ok.. Ale jak to zapisać?? Próbowałem coś żeby sprawdzało czy return kalkulatora jest instancji Double ale jest wtedy konflikt double!=Double |
|
pekfos |
» 2018-04-15 16:57:38 Wykonuj tak długo dopóki wszystko jest ok.. Ale jak to zapisać?? |
A co to znaczy, że jest ok? Albo że nie jest..? |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 17:19:49 Wykonuj tak długo dopóki NIE jest ok* miało być. Tzn jeżeli wpiszę 3 tokeny, nie dziele przez 0, 1 i 3 token to liczba. Ogólnie jeśli coś pójdzie nie tak jak powinno. Co te 3 przypadki dać w warunku w setLine() i pozbyć się tych w kalkulattorze? Tylko wtedy nie widzi mi zmiennych z kalkulatora. "token cannot be resolved" |
|
pekfos |
» 2018-04-15 17:26:56 Podaj kod. |
|
adrian.paz Temat założony przez niniejszego użytkownika |
» 2018-04-15 18:03:35 static void setLine() { do { Scanner skan = new Scanner( System.in ); String linia = skan.nextLine(); double wynik = Zad2.kalkulator( linia ); System.out.print( "= " + wynik ); skan.close(); } while( token.countTokens() != 3 ); }
No chociażby coś takiego. musiałbym wszystkie zmienne wypisać zaraz pod klasą żeby mieć do nich dostęp. Więc w pętli nie mogę dać żadnych takich warunków. Chyba nie da rady zrobić tego inaczej niż porzucić setLine i pisać wszystko w kalkulatorze ;/ |
|
1 2 3 « 4 » |