Problem z umiejscowieniem zmiennych.

Dyskusje na temat Javy.
krzysztof.szymko
Początkujący
Początkujący
Posty: 6
Dołączył(a): poniedziałek, 9 listopada 2015, 22:03

Problem z umiejscowieniem zmiennych.

Post przez krzysztof.szymko »

Witam, mam problem ze zmiennymi waga oraz wzrost, chciałbym dać możliwość użytkownikom wpisania ich wartości, natomiast w przypadku ulokowania zmiennych w klasie Bmi ciągle wyrzuca mi błąd. Nie ma tego problemu, gdy są w nawiasach main, natomiast w takim przypadku, nie mam możliwości odniesienia się do nich w klasie Bmi. Proszę o pomoc, w czym tkwi problem.



package wczytywanie.pkgint;

import java.util.*;

public class WczytywanieInt {


public static void main(String[] args)
{
Bmi a = new Bmi();



System.out.println(a.obliczBmi(waga, wzrost));
}


}
class Bmi
{
Scanner dane = new Scanner(System.in);

double waga;
waga = dane.nextDouble();
double wzrost;
wzrost = dane.nextDouble();

Bmi()
{

}
Bmi(double waga, double wzrost)
{
this.waga = waga;
this.wzrost = wzrost;

}
double obliczBmi(double waga, double wzrost)
{
this.waga = waga;
this.wzrost = wzrost;
return waga/(wzrost*2);

}
}
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Problem z umiejscowieniem zmiennych.

Post przez Morfidon »

Hej,

Proszę wklej kod używając znaczników code, oraz pokaż jaki błąd Ci wypisuje.

Pozdrawiam,

Arek
krzysztof.szymko
Początkujący
Początkujący
Posty: 6
Dołączył(a): poniedziałek, 9 listopada 2015, 22:03

Re: Problem z umiejscowieniem zmiennych.

Post przez krzysztof.szymko »

Code: Zaznacz cały

package wczytywanie.pkgint;

import java.util.*;

public class WczytywanieInt {

    
    public static void main(String[] args) 
    {
        Bmi a = new Bmi();

        System.out.println(a.obliczBmi(waga, wzrost));
    }
    
    
}
class Bmi
{
    Scanner dane = new Scanner(System.in);
    
    double waga;
    waga = dane.nextDouble();
    double wzrost;
    wzrost = dane.nextDouble();

Bmi()
{

}
Bmi(double waga, double wzrost)
{
    this.waga = waga;
    this.wzrost = wzrost;

}
double obliczBmi(double waga, double wzrost)
{
    this.waga = waga;
    this.wzrost = wzrost;
    return waga/(wzrost*2);
    
}
}

Błędy to incompatible types: double cannot be converted to waga
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Problem z umiejscowieniem zmiennych.

Post przez Morfidon »

Hej Twój kod powinien wyglądać inaczej:

Code: Zaznacz cały

class Bmi
{

    
    double waga;

    double wzrost;


Bmi()
{    
    Scanner dane = new Scanner(System.in);
   waga = dane.nextDouble();
    wzrost = dane.nextDouble();
}
Bmi(double waga, double wzrost)
{
    this.waga = waga;
    this.wzrost = wzrost;

}
double obliczBmi(double waga, double wzrost)
{
    this.waga = waga;
    this.wzrost = wzrost;
    return waga/(wzrost*2);
    
}
}
inicjalizację wartości powinieneś robić w konstruktorach to raz, a dwa w tym miejscu:

Code: Zaznacz cały

   System.out.println(a.obliczBmi(waga, wzrost));
ani zmienna waga, ani wzrost nie istnieje. Musisz podać jakąś konkretną wartość. Powinieneś również nadpisać funkcję obliczBmi i stworzyć taką, która nie przyjmuje argumentów, a korzysta z tych co już zostały przysłane z konstruktora.

Pozdrawiam,

Arkadiusz W.
krzysztof.szymko
Początkujący
Początkujący
Posty: 6
Dołączył(a): poniedziałek, 9 listopada 2015, 22:03

Re: Problem z umiejscowieniem zmiennych.

Post przez krzysztof.szymko »

Rozumiem, dziękuję bardzo za pomoc.
Morfidon napisał(a):Powinieneś również nadpisać funkcję obliczBmi i stworzyć taką, która nie przyjmuje argumentów, a korzysta z tych co już zostały przysłane z konstruktora.
Wiem, że tak powinno to wyglądać, natomiast nie bardzo wiem, jak to wykonać. Czy mógłbyś poświęcić chwilę i przedstawić taki kod?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Problem z umiejscowieniem zmiennych.

Post przez Morfidon »

No zrób dokładnie to co napisałem. Stwórz metodę, która nie ma argumentów, a korzysta z właściwości pól. Nie mogę napisać tego za Ciebie bo się nic nie nauczysz. To są podstawy. Po prostu stwórz dokładnie to co napisałem. Przecież to co zrobiłeś jest teoretycznie trudniejsze.
krzysztof.szymko
Początkujący
Początkujący
Posty: 6
Dołączył(a): poniedziałek, 9 listopada 2015, 22:03

Re: Problem z umiejscowieniem zmiennych.

Post przez krzysztof.szymko »

Code: Zaznacz cały

double obliczenie(Bmi a)
{
    double wynik = waga/(wzrost*2);
    return wynik;
}
w tym przypadku metoda faktycznie przyjmuje wartości, które są w konstruktorze. Natomiast wyrzuca błąd jeśli chcę wprowadzić wartości z klawiatury, korzystając z takiej metody, dla konstruktora, dla którego wprowadzam parametry:

Code: Zaznacz cały

double obliczenie()
{
double wynik = waga/(wzrost*2);
return wynik;
}
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Problem z umiejscowieniem zmiennych.

Post przez Morfidon »

Pamiętaj proszę o tym, że ja nie jestem kompilatorem i jeśli wystąpi błąd to wypisz jaki to błąd bo mam za mało kontekstu, by się domyślić.

Masz zrobić po prostu drugą metodę o takiej samej nazwie, ale bez argumentów i korzystać z danych, które będą stworzone w konstruktorze.

Code: Zaznacz cały

double obliczBmi()
{

    return this.waga/(this.wzrost*2);
    
}
krzysztof.szymko
Początkujący
Początkujący
Posty: 6
Dołączył(a): poniedziałek, 9 listopada 2015, 22:03

Re: Problem z umiejscowieniem zmiennych.

Post przez krzysztof.szymko »

Code: Zaznacz cały

double obliczBmi()
{

    return this.waga/(this.wzrost*2);
   
}
Przy zastosowaniu metody, którą wrzuciłeś, pojawia się następujący bląd:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at poprawiony.kod.bmi.Bmi.<init>(PoprawionyKodBmi.java:32)
at poprawiony.kod.bmi.PoprawionyKodBmi.main(PoprawionyKodBmi.java:11)
Java Result: 1

Cały kod wygląda natomiast następująco:

Code: Zaznacz cały

package poprawiony.kod.bmi;

import java.util.*;
public class PoprawionyKodBmi {

   
    public static void main(String[] args)
    
    {
        Bmi a = new Bmi();
        System.out.println(a.obliczanieBmi());
    }
    
}

class Bmi
{

    
    double waga;

    double wzrost;


Bmi()
{    
    Scanner dane = new Scanner(System.in);
    System.out.println("Podaj wagę i naciśnij Enter:");
   waga = dane.nextDouble();
   System.out.println("Podaj wzrost i naciśnij Enter:");
    wzrost = dane.nextDouble();
}
Bmi(double waga, double wzrost)
{
    this.waga = waga;
    this.wzrost = wzrost;

}
double obliczenie(Bmi a)
{
//    this.waga = waga;
//    this.wzrost = wzrost;
    double wynik = waga/(wzrost*2);
    return wynik;
}
double obliczanieBmi()
{
    return this.waga/(this.wzrost*2);
}
}
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Problem z umiejscowieniem zmiennych.

Post przez Morfidon »

Spróbuj tak:

Code: Zaznacz cały

    Scanner dane = new Scanner(System.in);
    System.out.println("Podaj wagę i naciśnij Enter:");
   this.waga = Double.parseDouble(dane.nextLine());
   System.out.println("Podaj wzrost i naciśnij Enter:");
    this.wzrost = Double.parseDouble(dane.nextLine());
Post Reply