# IO-BMIRechner



## lassard (29. Mrz 2010)

hi, hab gestern angefangen java zu lernen und wollte nen BMI Rechner progammieren, der will aber nicht compilen - was mach ich falsch?
Das ist er:


```
import java.io.*;

class BMI
{
  public static void main (String[] args) throwsIOException
  {
  InputStreamReader inStream = new InputStreamReader( System.in );

  BufferedReader stdin = new BufferedReader (new InputStreamReader( System.in));

  String txtin;
  int gewicht, groeße, groeßeq, alter, BMI;

  System.out.println("Geben Sie Ihr Gewicht in Kg an.");
  txtin = stdin.readLine();
  gewicht = Ineger.parse.Int( txtin );

  System.out.println("Geben Sie Ihre Koerpergroesse in cm an.");
  txtin = stdin.readLine();
  groesse = Integer.parse.Int( txtin ); 

  groesseq = groesse * groesse;
  BMI = gewicht / groesseq;
  

  System.out.println("Ihr aktueller BMI betraegt:" + BMI );
  }
}
```

P.S. das alter mach ich später erst wenn ich ne Tabelle gefunden habe...


----------



## eRaaaa (29. Mrz 2010)

Ohje, also da gibts einiges :

1.) throwsIOException :arrow: throws IOException
2.) gewicht = Ineger.parse.Int(txtin);  :arrow: da fehlt ein t bei Integer ! 
 2.1) es muss parseInt heißen, also ohne den Punkt !
3.) einmal heißt es bei dir groeße (bei der Deklaration) aber unten willst du einen Wert groesse zuordnen 
4.) das Gleiche wie bei 3) gilt natürlich auch bei groeßeq und groesseq
5.) int/int = int (solltest du beachten!)

/edit: p.s: es gibt hier schöne JAVA-Tags ^^

```
class BMI
{
public static void main (String[] args) throwsIOException
{
InputStreamReader inStream = new InputStreamReader( System.in );

BufferedReader stdin = new BufferedReader (new InputStreamReader( System.in));

String txtin;
int gewicht, groeße, groeßeq, alter, BMI;

System.out.println("Geben Sie Ihr Gewicht in Kg an.");
txtin = stdin.readLine();
gewicht = Ineger.parse.Int( txtin );

System.out.println("Geben Sie Ihre Koerpergroesse in cm an.");
txtin = stdin.readLine();
groesse = Integer.parse.Int( txtin ); 

groesseq = groesse * groesse;
BMI = gewicht / groesseq;


System.out.println("Ihr aktueller BMI betraegt:" + BMI );
}
}
```


----------



## lassard (29. Mrz 2010)

Ja, Danke erstmal, hast natürlich recht, das hätte ich sehen müssen.
läuft aber immer noch nicht - was meinst du mit 5. int/int ?

geht das nicht? muss ich da ne double nehmen?
dachte der killt mir da nur das nachkomma...


----------



## lassard (29. Mrz 2010)

O.K. hab ein bisschen gespielt und jetzt läuft es.


```
import java.io.*;

class BMI
{
  public static void main (String[] args) throws IOException
  {
  String rechne;
  double gewicht, groesse, groesseq, alter, BMI;

  BufferedReader stdin = new BufferedReader ( new InputStreamReader( System.in ) );
   

  System.out.println("Geben Sie Ihr Gewicht in Kg an.");
  rechne = stdin.readLine();
  gewicht = Double.parseDouble( rechne );

  System.out.println("Geben Sie Ihre Koerpergroesse in m an.");
  rechne = stdin.readLine();
  groesse = Double.parseDouble( rechne ); 

  groesseq = groesse * groesse;
  BMI = gewicht / groesseq;
  

  System.out.println("Ihr aktueller BMI betraegt:" + BMI );
  }
}
```

bei der Meterangabe nimmt er aber kein "," sondern nur "."
wie kann man das ändern?


----------



## AlexSpritze (29. Mrz 2010)

lassard hat gesagt.:


> bei der Meterangabe nimmt er aber kein "," sondern nur "."
> wie kann man das ändern?




```
groesse = Double.parseDouble( rechne.replaceAll(",", ".") );
```

Damit werden alle (sollte höchstens eins sein) Vorkommen von Kommata in dem String _rechne_ durch einen Punkt ersetzt.


----------



## eRaaaa (29. Mrz 2010)

```
rechne = stdin.readLine().replaceAll(",", ".");
```

zum Beispiel...

/edit: der Post stand doch eben noch nicht da? :reflect:


----------



## AlexSpritze (29. Mrz 2010)

eRaaaa hat gesagt.:


> /edit: der Post stand doch eben noch nicht da? :reflect:



Hatte auch gedacht, in der Zeit die ich für den Post gebraucht hatte, hätte schon jmd. anderes geantwortet.

Aber das letztgenannte Problem läßt sich bestimmt auch irgendwie mit dem Package java.text.* lösen, oder?!


----------



## dhachim (31. Mrz 2010)

Vielleicht ist es etwas früh, aber du solltest dir eine Entwicklungsumgebung besorgen, die dich mit der Syntax unterstütz. 

Eclipse würde ich eigentlich sogar schon Anfängern empfehlen. Je früher man anfängt, desto besser. 

ABER Achtung, lass dir nicht zuviel Arbeit zu Anfang abnehmen. Schaue immer was du tust, und versuche es zu verstehen. Denn sonst wirst du irgendwann zwar Java programmieren können, aber kein hello World zu Papier bekommen. 

All die Fehler die du gemacht hast, hätte dir Eclipse angezeigt, und wahrscheinlich auch für alles ne Lösung vorgeschlagen.


Also schaus dir vielleicht mal an. Zu Eclipse gibts genug Anleitungen und Tipps: :rtfm:


----------



## The_S (31. Mrz 2010)

eRaaaa hat gesagt.:


> ```
> rechne = stdin.readLine().replaceAll(",", ".");
> ```
> 
> ...



Warum replaceAll und nicht einfach nur replace?


----------



## Tomate_Salat (2. Apr 2010)

replace ersetzt meines wissens nach nur das erste vorkommen replaceAll ersetzt alle.


----------



## eRaaaa (2. Apr 2010)

Naja, der String hat normal aber eh nur ein Komma, das meinte The_S.
Ich rede mich jetzt einfach damit raus, dass ich dahinter ja -  "zum Beispiel" - angehängt habe :bae:


----------



## Tomate_Salat (2. Apr 2010)

Nun ja, normal, aber was ist in der Branche schon normal? Ok, selbst im Falle von einer Eingabe mit 2 oder mehr Kommas sollte hier ein Fehler ausgelöst werden (wäre eigentl. so ein Eintrag legitim: 13.4.52?! Mir fällt gerade auf, soetwas noch nie ausprobiert zu haben, aber ich glaubs eher nicht), denn viele Benutzer glauben dann doch: der Rechner übernimmt ja eh das Denken für mich^^.


----------



## The_S (6. Apr 2010)

Tomate_Salat hat gesagt.:


> replace ersetzt meines wissens nach nur das erste vorkommen replaceAll ersetzt alle.



Dann ist dein Wissen falsch  .


----------



## Tomate_Salat (6. Apr 2010)

> replace(char oldChar, char newChar)
> Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.



^^ mein Fehler, benutz replace seeeehr selten, keine Ahnung wie ich da auf meine vorherige Aussage gekommen bin :-/ wahrscheinl. durch das [c]All[/c] von replaceAll.


----------

