Java - konwerter litrów na galony

0

Dobry wieczór !
W ramach ćwiczeń napisałem sobie konwerter litrów na galony/galonów na litry, oto kod:

//Program przelicza litry na galony i galony na litry
class KalkulatorGaleLitry {
	public static void main(String args [])
	throws java.io.IOException{
		int i;
		double gale, litry;
		System.out.println("Wybierz jednostkę do przeliczenia");
		System.out.println("1. Galony na litry");
		System.out.println("2. Litry na gale");
		System.out.print("Twój wybór to:"); i = System.in.read();
		switch (i) {
			case '1': 
				System.out.println("Podaj ilość galonów: ");
				gale = System.in.read();
				litry = gale * 3.7854;
				System.out.println(gale + " galonów to " + litry + "litrów.");
				break;
			case '2':
				System.out.println("Podaj ilość litrów: ");
				litry = System.in.read();
				gale = litry * 0.2641728747;
				System.out.println(litry + "litrów benzyny to " + gale + "galonów.");
				break;
				default:
				System.out.println("Brak takiej opcji. Spróbuj ponownie.");
				
		}		
				
	}
}

ale niestety nie działa on zbyt dobrze, ponieważ w switchach nie działa

System.in.read()

a program sam przypisuje sobie obu zmiennym double wartość 13.0

Wiem, że czegoś nie wiem :D , dlatego tak się dzieje. Dlaczego w switchach nie działa System.in.read() i zmiennym przypisywana jest wartość 13.0 ?

Pozdrawiam!

0
int i= Integer.parseInt(System.in.read());
double gale = Double.parseDouble(System.in.read());
0
_13th_Dragon napisał(a):
int i= Integer.parseInt(System.in.read());
double gale = Double.parseDouble(System.in.read());

Tak myślałem, że wykroczyłem poza ramy swojej wiedzy :)

Dziękuję! ;)

0

Skoro udało się zadać sensowne pytanie to nie było wykroczenia poza bramy tylko zerknięcie poza płot w celu przeniesienia go nieco dalej ;)

0
_13th_Dragon napisał(a):

Skoro udało się zadać sensowne pytanie to nie było wykroczenia poza bramy tylko zerknięcie poza płot w celu przeniesienia go nieco dalej ;)

Ale coś tego płotu wyrwać nie mogę, bo zastosować rozwiązania nie mogę, kompilacja wyrzuca błąd. Czy dużą prośbą było by gdybym Cię poprosił o wklejenie tych dwóch linijek w kod ? ;)

0

Deklaruj zmienne najpóźniej jak to możliwe, czyli usuń swoi przedwczesne deklaracje.

0
_13th_Dragon napisał(a):

Deklaruj zmienne najpóźniej jak to możliwe, czyli usuń swoi przedwczesne deklaracje.

//Program przelicza litry na galony i galony na litry
class KalkulatorGaleLitry {
	public static void main(String args [])
	throws java.io.IOException{
			
		System.out.println("Wybierz jednostkę do przeliczenia");
		System.out.println("1. Galony na litry");
		System.out.println("2. Litry na gale");
		System.out.print("Twój wybór to:"); int i = System.in.read();
		switch (i) {
			case '1': 
				System.out.println();
				System.out.println("Podaj ilość galonów: ");
				double gale = System.in.read();
				System.out.println(gale + " galonów to " + (gale * 3.7854) + "litrów.");
				break;
			case '2':
				System.out.println();
				System.out.println("Podaj ilość litrów: ");
				double litry = System.in.read();
				System.out.println(litry + "litrów benzyny to " + (litry * 0.2641728747) + "galonów.");
				break;
				default:
				System.out.println("Brak takiej opcji. Spróbuj ponownie.");
				
		}		
				
	}
}

Zrobiłem tak, jak radziłeś ;) ale z

int i= Integer.parseInt(System.in.read());
double gale = Double.parseDouble(System.in.read());

póki co poradzić sobie nie mogę :( Ale spokojnie, rozwiązanie w takim razie przyjdzie do mnie samo z nabywaną regularnie wiedzą ;)

0

Już zapomniałem jak to się czytało w konsole :/ Poprawione, działa:

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone {
	private static Scanner sc = new Scanner(System.in); 
    public static void main(String args [])
    throws java.io.IOException{
 
        System.out.println("Wybierz jednostkÄ do przeliczenia");
        System.out.println("1. Galony na litry");
        System.out.println("2. Litry na gale");
        System.out.print("Twój wybór to:"); 
        int i = sc.nextInt();
        switch (i) {
            case 1: 
                System.out.println();
                System.out.println("Podaj iloÅÄ galonów: ");
                double gale = sc.nextDouble();
                System.out.println(gale + " galonów to " + (gale * 3.7854) + "litrów.");
                break;
            case 2:
                System.out.println();
                System.out.println("Podaj iloÅÄ litrów: ");
                double litry = sc.nextDouble();
                System.out.println(litry + "litrów benzyny to " + (litry * 0.2641728747) + "galonów.");
                break;
                default:
                System.out.println("Brak takiej opcji. Spróbuj ponownie.");
 
        }        
 
    }
}

http://ideone.com/POw5kt

1 użytkowników online, w tym zalogowanych: 0, gości: 1