Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program liczacy temp JAVA

larry43 14 Paź 2010 16:05 2658 5
  • #1 14 Paź 2010 16:05
    larry43
    Poziom 8  

    Witam
    Mam problem z programikiem obliczajacym temperature z Celsjusza na Fahrenheita
    nie wiem dlaczego mi wychodza dziwne wyniki :/ jestem w tym zielony dopiero zaczynam prosze o wyrozumialosc :)


    Code:
    public static void main(String[] args) throws IOException {
    

            System.out.println("Podaj wartość w stopniach Celsjusza : ");
            double cels, fahr;
            cels = System.in.read();
            fahr = 9/5 * (cels + 32);
            System.out.println(cels);
            System.out.println("Stopnie w Celsjuszach = "+cels+ " Farenheity = "+fahr);


    Np jak wpisuje wartość celsjusza "5.0" to pozniej mi wypisuje ze "stopnie w celsjuszach = 53.0 fahrenhaity = 85.0
    DLACZEGO???????
    pozdrawiam

    Proszę pamiętać o używaniu znaczników code.
    Proszę poprawić błędy ortograficzne, zwłaszcza brak polskich znaków.- arnoldziq

    0 5
  • #2 14 Paź 2010 17:52
    Jovik
    Poziom 15  

    Z tego co widzę tutaj: ideone to Twój kod poprawnie wyświetla wartość Celcjuszy.

    Myli się z Fahrenheitem, ale to wina napisanego kodu. 9/5 jest równe 1 dla maszyny. Albo wymuś obliczenia zmiennoprzecinkowe (wstawiając wcześniej (-1*)) albo zmień kolejność operacji (dziel na końcu)]Link[/url]

    0
  • #3 14 Paź 2010 20:19
    larry43
    Poziom 8  

    Troszke poszperałem zmieniłem też wzór na obliczenie Fahrenhaitów i wyszło mi coś takiego :)

    Code:
     public static void main(String[] args) throws IOException {
    

            System.out.println("Podaj wartość w stopniach Celsjusza : ");
            BufferedReader celsik = new BufferedReader(new InputStreamReader(System.in),1);
            odczyt = celsik.readLine();
            cels = Integer.parseInt(odczyt);
           
            double fahr;
            fahr = (cels * 1.8)+32;
           
            System.out.println(+cels+" Stopnie w Celsjuszach = "+fahr+ " Farenheity ");


    Wszystko jest pieknie ładnie tylko że błędy mi wyskakują jak chcę podać wartość celsjuszy w formie dziesietnej :/ i co tu jeszcze mozna zmienic??? :/

    0
  • #4 14 Paź 2010 21:27
    przemo_wielki
    Poziom 23  

    A jaki typ ma zmienna cels ?

    Proponuję użyć klasę Scanner:

    Code:
            Scanner cin = new Scanner(System.in);
    
            cels = cin.nextDouble();

    Dalej już sobie poradzisz.

    0
  • #5 14 Paź 2010 22:31
    Jovik
    Poziom 15  

    Pomyliło mi się (za długo w pracy siedziałem).
    Zamiast (-1) * ... miało być 1.0 * ...

    Dodano po 19 [minuty]:

    Integer.parseInt(odczyt);
    Parsujesz liczbę całkowitą (int), a chesz dziesiętną (double)?

    0
  • #6 15 Lis 2010 22:49
    larry43
    Poziom 8  

    Rozwiazalem juz swoj problem a oto wynik moze komus sie przyda.

    Code:

    package celsjusz;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class Main {
        static String odczyt;
        static int cels;

        public static void main(String[] args) throws IOException {

            System.out.println("Podaj wartość w stopniach Celsjusza : ");
            BufferedReader celsik = new BufferedReader(new InputStreamReader(System.in));
            odczyt = celsik.readLine();
            cels = Integer.parseInt(odczyt);
            double fahr;
            fahr = 1.0*(cels * 1.8)+32;
            System.out.println(+cels+" Stopnie w Celsjuszach = "+fahr+ " Farenheity ");


           
        }

    }


    Pozdrawiam

    0