Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Java] Wywołanie metody z parametrami.

adrianwidzew 01 Maj 2013 14:11 2841 4
  • #1 01 Maj 2013 14:11
    adrianwidzew
    Poziom 6  

    Witam. Jestem początkującym w języku Java.
    I mam problem przy metodach i parametrach.
    Podam kod mojego programu z którym mam problem:

    import java.lang.Math.*;
    import java.util.Scanner;
    class wzory{
    int a, b, r;
    int kwadrat(int a){
    return (int)(a*a);}
    int prostokat(int a, int b){
    return (int)(2*a + 2*b);}
    double kolo(int r){
    return (double)(Math.PI*(r*r));}
    void calosc(int a, int b, int r){
    return System.out.println("pole kwadratu o boku " + (int)a + " wynosi " + (int)kwadrat(a) + ", pole prostokata " + (int)prostokat(a, b) + ", pole kola " + (double)kolo(r));}}
    class testowy
    {
    public static void main(String[] args)
    {
    System.out.println("Podaj liczbe a");
    int liczba1;
    int liczba2;
    int promien;
    Scanner odczyt = new Scanner(System.in);
    liczba1 = odczyt.nextInt();
    System.out.println("Podaj liczbe b");
    liczba2 = odczyt.nextInt();
    System.out.println("Podaj promien r");
    promien = odczyt.nextInt();
    wzory wynik = new wzory(liczba1, liczba2, promien);
    wynik.calosc();
    }
    }

    Problem podobno jest z klasą wzory.
    Mógłby ktoś pomóc? Trochę się pogubiłem już w tych kodach.

    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. Proszę to poprawić! - arnoldziq

    0 4
  • #3 02 Maj 2013 09:20
    adrianwidzew
    Poziom 6  

    Problem jest chyba powiązany z "void calosc".
    Konsola cmd wyświetla mi że nie może zwrócić wartości z metody, której wynikiem jest typ void,
    drugi problem leży z konstruktorem wzory wynik = new wzory(liczba1, liczba2, promien), że niby nie ma argumentów.
    trzeci problem jest opisany Metoda calosc z klasy Wzory nie może być stosowana do określonych rodzajów; wynik.calosc(); pokazuje strzałką od dołu kropkę między wynik a calosc.
    Chciałem się nauczyć tych metod z parametrami, próbując samemu coś sklecić ale coś mi nie wychodzi. Jak robię pod wzór(dosłownie) z książki to wszystko dobrze. Ale przecież trzeba też samemu kombinować.

    0
  • #4 02 Maj 2013 10:19
    marcinj12
    Poziom 40  

    Słabo znam Javę, ale komunikaty o błędach które dostałeś są dosyć jasne:

    - jeżeli metoda (calosc) jest typu void, to nic nie zwraca w wyniku, więc słówko return wydaje się tu zbędne. Dodatkowo, wynik chcesz wypisać na ekran - tym bardziej metoda nie musi nic zwracać, po prostu wykonujesz to wypisanie i już.

    - w klasie wzory nie masz określonego konstruktora z parametrami. Nie wiem jak w Javie, ale w C# w takim wypadku niejawnie jest tworzony jedynie domyślny konstruktor bezparametrowy. Jeżeli chcesz przekazać do konstruktora jakieś parametry, musisz go najpierw zdefiniować. Zobacz tutaj na drugi przykład (nie jestem pewien, czy nie będziesz musiał go jeszcze poprzedzić słówkiem public).

    - trzeci problem prawdopodobnie wynika z pierwszego.

    Swoją drogą - niepotrzebnie wykonujesz tyle rzutowań. Jeżeli mnożysz przez siebie dwie liczby typu int, wynik też będzie typu int, nie musisz pisać (int)(a*a). W miejscu, gdzie wypisujesz całość, też niepotrzebne są rzutowania - jeżeli już, to rzutujesz liczby na napis metodą .toString()

    0
  • #5 02 Maj 2013 10:21
    kopek11111
    Poziom 17  

    marcinj12 napisał:
    Nie wiem jak w Javie, ale w C# w takim wypadku niejawnie jest tworzony jedynie domyślny konstruktor bezparametrowy

    Też tak jest.

    A co do poprzednich Twoich uwag zgadzam się.

    0