Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

pętla, continue

Ostatnio zmodyfikowano 2018-04-15 18:03
Autor Wiadomość
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.
P-170698
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:
C/C++
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)
P-170699
pekfos
» 2018-04-15 16:47:02
Zastępowanie pętli rekurencją nie jest poprawne.
P-170700
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
P-170701
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..?
P-170702
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"
P-170703
pekfos
» 2018-04-15 17:26:56
Podaj kod.
P-170704
adrian.paz
Temat założony przez niniejszego użytkownika
» 2018-04-15 18:03:35
C/C++
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 ;/
P-170705
1 2 3 « 4 »
Poprzednia strona Strona 4 z 4