Minulla on ongelma...teen sovellusta joka laskee käyttäjän painoindeksin, mutta joku mättää ja en osaa ratkaista ongelmaa.Osaisiko joku neuvoa tyhmää? Tässä ois koodi...
public class Painoindeksi
{
public static void main (String []args)
{
System.out.println ("Anna paino: "); //Kysytään käyttäjän paino
paino= lueInt();
public static int lueInt() { //kokonaisluvun lukeminen
int arvo=-1;
boolean ok;
do {
try {
arvo = Integer.parseInt(stdin.readLine());
ok = true;
} catch (Exception e) {
System.out.println("Kelvoton kokonaisluku. Anna uusi!");
ok = false;
}
}
while (!ok);
return arvo;
}
System.out.println ("Anna pituus metreinä: "); // kysytään pituus
pituus= lueDouble();
public static double lueDouble() { // desimaaliluvun lukeminen
double arvo=-1;
boolean ok;
do {
try {
arvo = new Double(stdin.readLine()).doubleValue();
ok = true;
} catch (Exception e) {
System.out.println("Kelvoton desimaaliluku. Anna uusi!");
ok = false;
}
}
while (!ok);
return arvo;
// suoritetaan painoindeksin lasku
painoindeksi= paino /(pituus * pituus);
}
System.out.println ("Painoindeksisi on: " painoindeksi);
}
}
public class Painoindeksi
{
public static void main (String []args)
{
System.out.println ("Anna paino: "); //Kysytään käyttäjän paino
paino= lueInt();
public static int lueInt() { //kokonaisluvun lukeminen
int arvo=-1;
boolean ok;
do {
try {
arvo = Integer.parseInt(stdin.readLine());
ok = true;
} catch (Exception e) {
System.out.println("Kelvoton kokonaisluku. Anna uusi!");
ok = false;
}
}
while (!ok);
return arvo;
}
System.out.println ("Anna pituus metreinä: "); // kysytään pituus
pituus= lueDouble();
public static double lueDouble() { // desimaaliluvun lukeminen
double arvo=-1;
boolean ok;
do {
try {
arvo = new Double(stdin.readLine()).doubleValue();
ok = true;
} catch (Exception e) {
System.out.println("Kelvoton desimaaliluku. Anna uusi!");
ok = false;
}
}
while (!ok);
return arvo;
// suoritetaan painoindeksin lasku
painoindeksi= paino /(pituus * pituus);
}
System.out.println ("Painoindeksisi on: " painoindeksi);
}
}
Vastaukset 1
Vanhimmat
Alla on esimerkki toimivasta versiosta, (vaatii kuitenkin Java 1.5:n koska käyttää Scanner luokkaa). Koodissasi oli lueDouble ja lueInt metodit kirjoitettu main metodin sisään, jota ei saa tehdä. Lisäksi et ollut määritellyt muuttujien paino, pituus ja painoindeksi tyyppiä, (eli onko int, double, float, tms.). Samoin et ollut missään kohdassa koodia määritellyt ja alustanut oliota stdin.
--- KOODI ALKAA ---
import java.util.Scanner;
import java.util.InputMismatchException;
public class Painoindeksi {
private static Scanner s = new Scanner(System.in);
public static double lueDouble() {
double arvo = 0;
while(true) {
try {
arvo = s.nextDouble();
break;
} catch(InputMismatchException e) {
s.next();
System.out.println("Kelvoton desimaaliluku. Anna uusi!");
}
}
return arvo;
}
public static int lueInt() {
int arvo = 0;
while(true) {
try {
arvo = s.nextInt();
break;
} catch(InputMismatchException e) {
s.next();
System.out.println("Kelvoton kokonaisluku. Anna uusi!");
}
}
return arvo;
}
public static void main (String []args) {
System.out.print("Anna paino: ");
int paino = lueInt();
System.out.print("Anna pituus metreinä: ");
double pituus = lueDouble();
double painoindeksi = paino/(pituus*pituus);
System.out.println ("Painoindeksisi on: " painoindeksi);
}
}
--- KOODI LOPPUU ---