# In Java eine Double (Temperatur) und ein Char (Einheit) einlesen



## Wincenty (26. September 2012)

Hallo,
ich habe als Hausaufgabe für Informatik in Java die Aufgabe bekommen, dass ich eine Temperatur (double) mit einer Einheit (char) also F, C oder K eingeben muss.
und als Ausgabe sollen alle drei Umgewandelten Werte kommen.

Ich werde versuchen bis Freitag 23:59 was zu finden und als Edit hier reinsetzen, also wäre ich froh wenn ihr schon was überlegt aber KEINE Antwort vor Samstag 12:00 postet.

Wir arbeiten mit import java.util.Scanner;
da ich es komisch finde warum man die Einheit miteingeben muss und trotzdem alle drei Werte ausgeben muss hab ich mir überlegt mittels if zu arbeiten und als Ausgabe bei einer bestimmten Einheit wie zB C folgendes als Ausgabe zu verwenden:
System.out.println ("Die eingegeben Temperatur von " + temp + temptyp + "ist gleich wie " + temp+273,15 + "K oder " + 
temp*1.8+32 + "F.");

[EDIT1] Ich habe jetzt mal nur für die Eingabe mal Folgendes gemacht aber es klappt nicht und ich weiß nicht recht was ich falsch mach - hier der Code:

import java.util.Scanner;

public class test {

public static void main (String[] args) {

        double temp;

        Scanner temperatur = new Scanner (System.in);
        temp = temperatur.nextDouble ();

        Scanner einchar = new Scanner (System.in);
        String input = einchar.next ();
        char [] *einchar2*;
        einchar2 = input.toCharArray();

        System.out.print ("Gewählte Einheit ist: " + *einchar2*);
        System.out.print ("Die Temperatur ist " + temp);
    }
}

Ich habe in Fett Kursiv meine Problemstelle markiert - Eclipse Ganymed sagt sowas: _Must explicit convert char[] to a String_
also jetzt wäre ich über Aufklärung froh - wie mach ich es nebenbei so das ich die Zahl Leerzeichen Einheit eingeben muss? Im Moment ist es so: Zahl Enter Buchstabe Enter; als Einheit gibt er mir immer einen anderen Zeichensalat


----------



## -Phoenix- (27. September 2012)

Moin,

du verwendest ein Char array ein einfacher Char reicht aber.

```
import java.util.Scanner;

public class test {

    public static void main(String[] args) {

        double temp;

        Scanner temperatur = new Scanner(System.in);
        temp = temperatur.nextDouble();

        Scanner einchar = new Scanner(System.in);
        String input = einchar.next();
        char einchar2;
        einchar2 = input.toCharArray()[0]; //aus dem Char array wird nur die erste Stelle genommen

        System.out.print("Gewählte Einheit ist: " + input);
        System.out.print(" Die Temperatur ist " + temp);
    }
}
```

Wenn du "Temperatur Leerzeichen Einheit" eingeben willst musst du einfach nur einen Scanner machen und dann aus diesem Scanner erst den double Wert auslesen mit 
	
	



```
temperatur = input.nextDouble();
```
 und danach mit 
	
	



```
type = input.next()
```
 den String der die Einheit enthält auslesen. Mit String.charAt(index) kannst du einen Buchstaben an einer bestimmten Stelle aus einem String in ein Char speichern.

Lg.


----------



## Wincenty (28. September 2012)

Ich hab jetzt das fertige Programm, nur verstehe ich nicht wie das jetzt mit dem auf die gleiche Zeile zu setzen gehen soll.
Ich werde noch etwas Text einfügen aber ändert ja so gut wie nix am Programm. Also mein bisheriger Source-Code:

[EDIT: Update des Codes]

```
package Hausaufgabe;

import java.util.Scanner;

public class try01 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner n = new Scanner (System.in) ;
        System.out.println ("Hallo " + n.nextLine() + "!") ;
        
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12 K oder 12 C oder 12 F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann ein Leerzeichen lassen und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        
        do {
        
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
        
        double temp ;
        char [] einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner temperatur = new Scanner (System.in) ;
        temp = temperatur.nextDouble () ;
        
        Scanner unit = new Scanner (System.in) ;
        String input = unit.next () ;
        
        einheit = input.toCharArray () ;

        if (input.equals("C") ) {
            
            double tempCK = temp+273.15;
            double tempCF = temp*1.8+32;
            
            System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (input.equals("K")) {
                
                double tempKC = temp-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temp + " " +  input + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (input.equals("F")) {
                    
                double tempFC = (temp-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
        
        System.out.println ("Möchten Sie das Programm beenden?") ;
        System.out.println ("Geben Sie Y für Ja oder N für Nein ein:") ;
        
        char [] endeinheit;
        Scanner ende = new Scanner (System.in) ;
        String lastput = ende.next () ;
        endeinheit = lastput.toCharArray () ;
        Scanner e = new Scanner(System.in) ;

    }while (lastput.equals("N"));
    //Ich bekomme hier nicht die Bedingen erfüllt, d.h. lastput greift nicht auf die Auswahl vor die Schleifenklammer, was ich nachvollziehen kann, aber wie soll es dann hier eingeräumt werden damit es geht nur mit do { ... } while?
    }
}
```
Ich werde noch veruschen das mit der Gleichzeiligen Eingabe.
Noch eine Frage: ich würde gerne das Programm zu einer Schleife machen:

Das Programm fragt ob man es fortführen will: J/N
Wenn J dann fortführen
oder wenn N dann beenden
oder Falsche Eingabe - Programm wird beendet.
verwende ich dafür do while und hinter while käme dann die verschachtelte If hinter while? nur sagen ob die Idee so korrekt ist oder nicht, will selber versuchen das auszutüffteln.


----------



## -Phoenix- (30. September 2012)

Moin,

dein Programm wird  bei mir gar nicht kompiliert, da die Variable 
	
	



```
lastput
```
 innerhalb der Schleife deklariert aber in der Schleifenbedingung genutzt wird.  
Die Bedingungen kommen hinter 
	
	



```
do {
```
 und vor 
	
	



```
while
```

Lg.


----------



## Wincenty (30. September 2012)

-Phoenix- schrieb:


> Moin,
> Die Bedingungen kommen hinter
> 
> 
> ...



Also, ich hab als // denn Block markiert der die Bedingung definiert, ich möchte ja zuerst fragen ob er das Programm beenden will oder nicht. Falls beenden dann beenden, falls nicht soll das Programm beim do { anfangen


```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!") ;
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann Eingabetaste drücken und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        do {
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temp ;
        char [] einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner temperatur = new Scanner (System.in) ;
        temp = temperatur.nextDouble () ;
        
        Scanner unit = new Scanner (System.in) ;
        String input = unit.next () ;
        
        einheit = input.toCharArray () ;

        if (input.equals("C") ) {
            
            double tempCK = temp+273.15;
            double tempCF = temp*1.8+32;
            
            System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (input.equals("K")) {
                
                double tempKC = temp-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temp + " " +  input + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (input.equals("F")) {
                    
                double tempFC = (temp-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
        } while ([COLOR=red][I]lastput[/I].equals("N"));
        // Wo kommt der Block hin: 
        //[I]System.out.println ("Möchten Sie das Programm beenden?") ;[/I]
        //[I]System.out.println ("Geben Sie Y für Ja oder N für Nein ein:") ;[/I]
        
        //[I]char [] endeinheit;[/I]
        //[I]Scanner ende = new Scanner (System.in) ;
[/I]        //[I]String lastput = ende.next () ;[/I]
        //[I]endeinheit = lastput.toCharArray () ;[/I]
        //[I]Scanner e = new Scanner(System.in) ;[/I]
        //[I]System.out.println ("Das Programm ist beendet. Auf Wiedersehen " + N + "!");[/I]
    }
}
```
Egal wo ich denn Block platziere, das Programm will nicht mehr laufen wegen irgenwelchen Fehlern


----------



## -Phoenix- (30. September 2012)

Mal schauen ob ich dich richtig verstehe  . Nach Programmstart kommen die oberen sysouts, dann soll gefragt werden ob das Programm beendet werden soll und wenn nein dann soll die Temperatur eingelesen werden ?

  Edit: Jetzt sollte es wieder Stimmen 

Wenn das so stimmt, dann mach anstatt das 
	
	



```
do { }while();
```
  ein 
	
	



```
while(true) {}
```
 also eine Endlosschleife  und als erstes Statement im while  machst du die Abfrage ob beendet werden soll oder nicht, wenn beendet werden soll kannst du das Programm mit exit(0); beenden , danch kommt  dann der Code er jetzt im do-while steht.


Lg,


----------



## Wincenty (30. September 2012)

-Phoenix- schrieb:


> Mal schauen ob ich dich richtig verstehe  . Nach Programmstart kommen die oberen sysouts, dann soll gefragt werden ob das Programm beendet werden soll und wenn nein dann soll die Temperatur eingelesen werden ?
> 
> Edit: Jetzt sollte es wieder Stimmen
> 
> ...


 
Ich glaub du hast mich nicht verstanden und ich dich auch nicht wirklich:
Das Programm soll mindestens einmal Durchlaufen wie in dieser finalen Version ohne schleife:

```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!") ;
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann Eingabetaste drücken und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temp ;
        char [] einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner temperatur = new Scanner (System.in) ;
        temp = temperatur.nextDouble () ;
        
        Scanner unit = new Scanner (System.in) ;
        String input = unit.next () ;
        
        einheit = input.toCharArray () ;

        if (input.equals("C") ) {
            
            double tempCK = temp+273.15;
            double tempCF = temp*1.8+32;
            
            System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (input.equals("K")) {
                
                double tempKC = temp-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temp + " " +  input + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (input.equals("F")) {
                    
                double tempFC = (temp-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temp + "°" + input + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
    }
}
```

Und nach der Ausgabe der ersten Umwandlung oder der Fehlermeldung soll das Programm fragen ob es nochmal laufen soll.

Nebenbei: Ich habs noch nicht wirklich verstanden wie das mit der einzeiligen Eingabe gehen soll, im Moment läuft es noch auf 2 Zeilen.


----------



## -Phoenix- (30. September 2012)

Moin ok, ich versuch es nochmal zu verstehen  . 


```
import java.util.Scanner;

public class Version1dot0 {

    public static void main(String[] args) {

        while (true) { //while true einfügen

            System.out.println("Geben Sie Ihren Nammen ein:");
            Scanner N = new Scanner(System.in);
            System.out.println("Hallo " + N + "!");
            System.out
                    .println("Dieses Programm ermöglicht es Ihnen eine Temperatur");
            System.out
                    .println("von einer Einheit in die anderen zwei Einheiten umzurechnen");
            System.out
                    .println("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:");
            System.out
                    .println("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,");
            System.out
                    .println("und dann Eingabetaste drücken und dann die Einheit als");
            System.out.println("Großbuchstabe und OHNE ° einzugeben.");
            System.out.println("Bitte geben Sie eine Temperatur ein:");

            double temp;
            char[] einheit;
            // Obwohl einheit nicht eingelesen wird, wird es für das Programm
            // benötigt. Warum ist es dann Gekennzeichnet, dass es nie
            // eingelesen wird?

            Scanner temperatur = new Scanner(System.in);
            temp = temperatur.nextDouble();

            Scanner unit = new Scanner(System.in);
            String input = unit.next();

            einheit = input.toCharArray();

            if (input.equals("C")) {

                double tempCK = temp + 273.15;
                double tempCF = temp * 1.8 + 32;

                System.out.println("Sie haben " + temp + "°" + input
                        + "eingegeben,");
                System.out.println("dies sind umgerechnet " + tempCK
                        + "K oder " + tempCF + "°F.");

            }

            else if (input.equals("K")) {

                double tempKC = temp - 273.15;
                double tempKF = tempKC * 1.8 + 32;

                System.out.println("Sie haben " + temp + " " + input
                        + " eingegeben,");
                System.out.println("dies sind umgerechnet " + tempKC
                        + "°C oder " + tempKF + "°F.");

            }

            else if (input.equals("F")) {

                double tempFC = (temp - 32) / 1.8;
                double tempFK = tempFC + 273.15;

                System.out.println("Sie haben " + temp + "°" + input
                        + "eingegeben,");
                System.out.println("dies sind umgerechnet " + tempFC
                        + "°C oder " + tempFK + "K.");

            }

            else
                System.out.println("ERROR: Ihre angegeben Einheit ist Falsch");
        }

      //hier die Abfrage einfügen ob Beendet werden soll oder nicht
      // if (lastput.equals("J")) { exit(0); }
    }//while true schließen
}
```
Temperatur und Einheit in einer Zeile einlesen

```
double temperatur;
        char einheit;

        Scanner input = new Scanner(System.in);
        
        temperatur = input.nextDouble();  //in temperatur steht jetzt die Zahl
        einheit = input.next().charAt(0);  // in einheit steht jetzt der erste Buchstabe der Einheit
```


----------



## Wincenty (30. September 2012)

```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!") ;
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann Eingabetaste drücken und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temperatur ;
        char [] einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner input = new Scanner(System.in);
        temperatur = input.nextDouble();
        einheit =[COLOR=red][I][B] input.next().charAt(0)[/B][/I]; //Type missmatch: cannot convert from char to char kommt da als Fehlermeldung - ich geh mir langsam selber auf den Sack bei dieser Blödheit:ugly:
        
        if (input.equals("C") ) {
            
            double tempCK = temperatur+273.15;
            double tempCF = temperatur*1.8+32;
            
            System.out.println ("Sie haben " + temperatur + "°" + input + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (input.equals("K")) {
                
                double tempKC = temperatur-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temperatur + " " +  input + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (input.equals("F")) {
                    
                double tempFC = (temperatur-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temperatur + "°" + input + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
    }
}
```


----------



## -Phoenix- (30. September 2012)

Möglichkeit 1:
du musst aus
	
	



```
char [] einheit ;
```
 das hier machen 
	
	



```
char einheit ;
```
 du brauchst nur einen Char und keine Kette von Chars (array).

Möglichkeit 2:
Wenn du aber das Char array behalten willst musst du einfach aus 
	
	



```
einheit =[COLOR=red][I][B] input.next().charAt(0)[/B][/I];
```
 das machen 
	
	



```
einheit =[COLOR=red][I][B] input.next()[/B][/I];
```
Lg.


----------



## Wincenty (30. September 2012)

Gesagt getan:

```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!") ;
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann Eingabetaste drücken und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temperatur ;
        char einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner input = new Scanner(System.in);
        temperatur = input.nextDouble();
        einheit = input.next().charAt(0);
        // temperatur = new Scanner (System.in)         temp = temperatur.nextDouble ()                 Scanner unit = new Scanner (System.in)         String input = unit.next () 
        
        
        //einheit = input.toCharArray () ;

        if (input.equals("C") ) {
            
            double tempCK = temperatur+273.15;
            double tempCF = temperatur*1.8+32;
            
            System.out.println ("Sie haben " + temperatur + "°" + input + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (input.equals("K")) {
                
                double tempKC = temperatur-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temperatur + " " +  input + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (input.equals("F")) {
                    
                double tempFC = (temperatur-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temperatur + "°" + input + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
    }
}
```

Aber wenn ich es so mache gehts nicht:
12 enter K -> Falsche Einheit (? obwohl ich es richtig hab?)
12 leerzeichen K -> Falsche Einheit (? obwohl ich es richtig hab?)
12K -> Fehler: Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextDouble(Unknown Source)
    at Hausaufgabe12.Version1dot0.main(Version1dot0.java:25)

jetzt wo da der Fehler im SrcCode ist weiß ich nicht das ist mir jetzt zu hoch


----------



## -Phoenix- (30. September 2012)

Moin 
	
	



```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!") ;
        System.out.println ("Dieses Programm ermöglicht es Ihnen eine Temperatur") ;
        System.out.println ("von einer Einheit in die anderen zwei Einheiten umzurechnen") ;
        System.out.println ("Bitte berücksichtigen Sie die folgende Schreibweise als Beispiel:") ;
        System.out.println ("12K oder 12C oder 12F, also bitte die Zahl zuerst eingeben,") ;
        System.out.println ("und dann Eingabetaste drücken und dann die Einheit als") ;
        System.out.println ("Großbuchstabe und OHNE ° einzugeben.") ;
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temperatur ;
        char einheit ;
        // Obwohl einheit nicht eingelesen wird, wird es für das Programm benötigt. Warum ist es dann Gekennzeichnet, dass es nie eingelesen wird?
        
        Scanner input = new Scanner(System.in);
        temperatur = input.nextDouble();
        einheit = input.next().charAt(0);
        // temperatur = new Scanner (System.in)         temp = temperatur.nextDouble ()                 Scanner unit = new Scanner (System.in)         String input = unit.next () 
        
        
        //einheit = input.toCharArray () ;

        if (einheit == 'C' ) {[COLOR=red]//änderung Hier            
            double tempCK = temperatur+273.15;
            double tempCF = temperatur*1.8+32;
            
            System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ;[COLOR=red]//änderung Hier            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (einheit == 'K') {[COLOR=red]//änderung Hier                
                double tempKC = temperatur-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temperatur + " " +  einheit + " eingegeben,") ;[COLOR=red]//änderung Hier                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (einheit == 'F') {[COLOR=red] //änderung Hier                    
                double tempFC = (temperatur-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ; [COLOR=red]//änderung Hier                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
    }
}
```
Du darft jetzt  bei den Vergleichen input also den scanner nicht benutzten sondern einfach den Char.


----------



## Wincenty (30. September 2012)

achso das wusst ich nicht danke für die ganze Hilfe^^
jetzt bleibt mir nur noch bei dem Programm die Schleife aber die wollte ich meinerseits einbauen also keine Pflicht.


----------



## -Phoenix- (30. September 2012)

kein Problem  , brauchst du noch eine Erklärung warum das jetzt so seien muss oder hast du das so verstanden ?
Lg.


----------



## Wincenty (30. September 2012)

ich versuch das mal so, aber ich weiß nicht genau wo ich die bedingung platzieren muss. am ende der berechnung will ich fragen ob das programm beendet werden soll oder nicht. wenn nicht dann soll das programm wieder sagen: Bitte geben sie eine temperatur ein (das letzte system.out. vor double temp und char einheit.


```
public static void main (String [] args) {
        
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!\nDieses Programm ermöglicht es Ihnen eine Temperatur\nvon einer Einheit in die anderen zwei Einheiten umzurechnen\nBitte berücksichtigen Sie die folgende Schreibweise als Beispiel:\n12 K oder 12 C oder 12 F, also bitte die Zahl zuerst eingeben,\nund dann ein Leerzeichen und dann die Einheit als\nGroßbuchstabe und OHNE ° einzugeben.") ;
        [COLOR=darkgreen][B]//Hier soll die Schleife beginnen-es muss mindestens einmal durchlaufen[/B]        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temperatur ;
        char einheit ;
        
        Scanner input = new Scanner(System.in);
        temperatur = input.nextDouble();
        einheit = input.next().charAt(0);

        if (einheit == 'C' ) {
            
            double tempCK = temperatur+273.15;
            double tempCF = temperatur*1.8+32;
            
            System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (einheit == 'K') {
                
                double tempKC = temperatur-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temperatur + " " +  einheit + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (einheit == 'F') {
                    
                double tempFC = (temperatur-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
[B][COLOR=darkgreen]// Hier soll kommen: System.out.println ("Möchten Sie das Programm beeden? Y für Ja oder N für Nein")
// char endlauf;
// Scanner ende = new Scanner(System.in);
// endlauf=ende.next().charAt(0); eine if kann ich mir ja eigentlich hier sparen
//while (endlauf == 'N);[/B]
    }
}
```


----------



## -Phoenix- (30. September 2012)

so wie du das geschieben hast sollte das eigentlich gehen .

Lg.


----------



## Wincenty (30. September 2012)

-Phoenix- schrieb:


> so wie du das geschieben hast *sollte* das eigentlich gehen .
> Ich würde die Bedingung am Schluss so machen
> 
> ```
> ...


 
Tuts aber nicht


```
import java.util.Scanner;

public class Version1dot0 {

    public static void main (String [] args) {
            
        System.out.println ("Geben Sie Ihren Nammen ein:") ;
        Scanner N = new Scanner (System.in) ;
        System.out.println ("Hallo " + N + "!\nDieses Programm ermöglicht es Ihnen eine Temperatur\nvon einer Einheit in die anderen zwei Einheiten umzurechnen\nBitte berücksichtigen Sie die folgende Schreibweise als Beispiel:\n12 K oder 12 C oder 12 F, also bitte die Zahl zuerst eingeben,\nund dann ein Leerzeichen und dann die Einheit als\nGroßbuchstabe und OHNE ° einzugeben.") ;
        do {
        System.out.println ("Bitte geben Sie eine Temperatur ein:") ;
                
        double temperatur ;
        char einheit ;
        
        Scanner input = new Scanner(System.in);
        temperatur = input.nextDouble();
        einheit = input.next().charAt(0);

        if (einheit == 'C' ) {
            
            double tempCK = temperatur+273.15;
            double tempCF = temperatur*1.8+32;
            
            System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ;
            System.out.println ("dies sind umgerechnet " + tempCK + "K oder " + tempCF + "°F.") ;
            
        }
        
            else if (einheit == 'K') {
                
                double tempKC = temperatur-273.15;
                double tempKF = tempKC*1.8+32;
                
                System.out.println ("Sie haben " + temperatur + " " +  einheit + " eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempKC + "°C oder " + tempKF + "°F.") ;
                
            }
        
                else if (einheit == 'F') {
                    
                double tempFC = (temperatur-32)/1.8;
                double tempFK = tempFC+273.15;
                
                System.out.println ("Sie haben " + temperatur + "°" + einheit + "eingegeben,") ;
                System.out.println ("dies sind umgerechnet " + tempFC + "°C oder " + tempFK + "K.") ;
                
            }
        
                    else System.out.println ("ERROR: Ihre angegeben Einheit ist Falsch") ;
        System.out.print ("Möchten Sie das Programm beeden? Y für Ja oder N für Nein");

        char endlauf;
        Scanner ende = new Scanner(System.in);
        endlauf=ende.next().charAt(0);
        if (endlauf == 'Y') {
         break;
         }
        } while (0==0) ;
    }
}
```
aber so läufts irgendwie


----------



## -Phoenix- (30. September 2012)

das war mist was ich vorhin geschieben hab, habs deswegen auch wieder aus dem Post rausgekommen aber du warst du schnell 

while (0==0) ; geil  scheib lieber while(true); sieht besser aus


----------



## DarkMo (30. September 2012)

wieso so kompliziert? ^^ macht doch sowas in der art:

```
bool end = false;
while(not end) {
    do_stuff(); // -> quasi dein normaler krempel mit einlesere usw
    ask_if_end(); // hier wird gefragt, ob man beenden möchte (end = true) oder nich (end bleibt unverändert false)
}
```

das müsste doch einwandfrei funtzen oder?


----------



## Wincenty (30. September 2012)

-Phoenix- schrieb:


> das war mist was ich vorhin geschieben hab, habs deswegen auch wieder aus dem Post rausgekommen aber du warst du schnell
> 
> while (0==0) ; geil  scheib lieber while(true); sieht besser aus


 
Zu spät habe schon das Programm zur Bewertung freigegeben kann also nicht mehr ändern aber egal es läuft
Ich versteh nicht ganz warum es so läuft aber es *LÄUFT*


----------

