Hawk2 Opublikowano 10 Czerwca 2008 Zgłoś Opublikowano 10 Czerwca 2008 (edytowane) import java.io.*;public class zad3 { /** * @param args */ public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub String linia_z_konsoli; //deklarujemy zmienna 'linia_z_konsoli' typu string czyli tekstowego int licz=0; // double liczba; // InputStreamReader bajt_znak = new InputStreamReader(System.in); // BufferedReader dana_wejsciowa = new BufferedReader(bajt_znak); //buforujemy wczytywane dane double tab1[]=new double[1000]; //tworzymy tablice o rozmiarze 1000 wyjdz: //zaznaczamy poza ktora petle ma wyjsc 'break' for (int i=0;i<1000;i++){ //dla i<n wykonaj[a po wykonaniu zwieksz 'i' o 1]: System.out.print("Podaj liczbe:"); //wypisujemy odpowiednia prosbe linia_z_konsoli=dana_wejsciowa.readLine(); //do zmiennej 'linia_z_konsoli' wpisujemy to, co podaje uzytkownik if(linia_z_konsoli==""){ //jezeli nie wpiszemy zadnej liczby, wykonaj: break wyjdz; //wychodzimy z petli przed ktora ustawilismy 'wyjdz' } liczba=Double.parseDouble(linia_z_konsoli); //konwertujemy zmienna 'linia_z_konsoli' typu string na 'liczba' typu int tab1[i]=liczba; //do miejsca 'i' tablicy 'tab1' wpisujemy wartosc zmiennej 'liczba' licz++; } System.out.println(); System.out.println("Liczby w odwrotnej kolejnosci: "); for (int i=0;i<licz;i++){ //dla i<n wykonaj[a po wykonaniu zwieksz 'i' o 1]: System.out.println(tab1[licz-i-1]); //wypisujemy tablice od tylu } }} W zadaniu chodzi o to, aby podawać kolejno liczby[typu double]. Linia pusta powinna zakończyć wprowadzanie znaków i program wyświetli liczby w odwrotnej kolejności, niż zostały wprowadzone. Program musi używać konsoli. Problem w tym, że chcę, żeby pusty string kończył pętlę [break] ale wywala błąd, że string jest pusty :P konkretniej to: Exception in thread "main" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at zad3.main(zad3.java:23) Jakieś pomysły? Muszę to jutro wysłać :P a nie mam pojęcia jak to zrobić :( P.S. niektóre komentarze są 'głupie' bo kopiowałem to z poprzedniego zadania i jeszcze ich nie przepisywałem poprawnie :P EDIT! Aaaa, już chyba wiem gdzie mam błąd! Myślałem że break opuszcza pętlę, przed którą wstawimy daną 'nazwę' czyli u mnie 'wyjdz'. Okazało się, że chyba jednak nie i po prostu gdy nic nie wpisuję, to reszta programu dalej próbuje przekonwertować 'nic' na liczbę zmiennoprzecinkową :P tylko jak opuścić te 2 pętle, gdy spełniony jest dany warunek? Jak zrobić swego rodzaju przeskok? OK już mam :D już działa ^^ Sprawa prosta :P przyrównywanie zmiennych tekstowych: String s = "something", t = "maybe something else"; if (s == t) // Legal, but usually WRONG. if (s.equals(t)) // RIGHT if (s > t) // ILLEGAL if (s.compareTo(t) > 0) // CORRECT> jak robiłem tak jak jest w 1 przykładzie, to nie działało ... ale zrobiłem ten z equals i zadziałało :D ładnie break`uje pętlę i wszystko działa :) można zostawić temat dla potomnych lub usunąć :P Edytowane 11 Czerwca 2008 przez Hawk2 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...