Uruchamienie metod w netbeans java

Witam. Dajmy przykładowy fragment kodu:

package hello;



public class hello {


public static void main(String[] args)

{

       System.out.println("hello 1");

}

public void hello(){

System.out.println("hello 2");

}


}

jak dam run program to wyświetli się hello 1 w jaki sposób uruchomić metodę hello w netbeans dla java ?

Wywołać ją w funkcji main()

czyli jak to będzie wyglądało na tym prostym przykładzie ? można prosić o pomoc, jeżeli to nie problem.

z góry dziękuję.

Np. tak. Widzę jednak, że zmagasz się z podstawami i podejrzewam, że dopiero zaczynasz programować więc jakiś podręcznik polecam wziąć i poczytać:)

public static void main(String[] args)

{

      System.out.println("hello 1");

      hello();

}


public static void hello(){

       System.out.println("hello 2");

}

to fakt niedawno zacząłem. Pracowałem wcześniej na kompilatorze blueJ i tam używanie metod było dużo łatwiejsze a netbeans jest bardziej rozbudowanym środowiskiem i staram się go opanować dopiero.

Mam jeszcze jedno pytanie. W jaki sposób pobrać parametr do metody.

Przykładowo taki kod:

public class tr {


    public static int oblicz(int x)

    {

    if(x==1) return x;

    else

        return x+oblicz(x+1);

    }

}

w blueJ było poprostu dać uruchom metodę i pytało o wpisanie parametru, jeżeli w kodzie, w metodzie było przykładowo medota(double x). Jak to się odbywa w netbeans?

proszę o pomoc.

public static void main(String[] args)

{

int z=oblicz(-10);

}

taki kod:

public class tr {



    public static void main(String[] args){

int z=oblicz(-10);

    }


    public static int oblicz(int x){


        if(x==1)

            return x;

        else

            return x+oblicz(x+1);


    }

}

program nie pokazuje w nim błędów. Po uruchomieniu pokazuje tylko napis: run: BUILD SUCCESSFUL (total time: 0 seconds) a nie widać nigdzie zwracanego wyniku, jest coś źle zapisane w kodzie, czy gdzie odczytać zwracany wynik? bo np. jak dam

int z=oblicz(4);

powinno zwrócić liczbę 10

a wyrzuca wyjątki:

Exception in thread “main” java.lang.StackOverflowError

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

at tr.oblicz(tr.java:22)

Przecież wyraźnie napisane StackOverflowError - błąd przepełnienia stosu

przy wywołaniu: int z=oblicz(4);

zostaje wywołane oblicz(4),

które z kolei wywoła oblicz(5),

które z kolei wywoła oblicz(6),

i tak dalej

do wykonania

if(x==1) return x;

praktycznie nigdy nie dojdzie, to znaczy doszło by po przepełnieniu int’a ale w tym czasie na stosie musiało by się zgromadzić coś kolo 32 GB danych. Oczywistym jest że komputer niema tyle pamięci nie wspominając już o tym że stos zwykle jest ograniczony do kilku KB.

To jak to jest. W kompilatorze blueJ zwraca dla poszczególnie prowadzonych wartości do metody odpowiednie im wyniki. Przykładowo dla 4 zwróci 10, a netbeans jest błąd przepełnienia. Dlaczego tak się dzieje ?

dlaczego przy wywołaniu oblicz(4),

"zostaje wywołane oblicz(4),

które z kolei wywoła oblicz(5),

które z kolei wywoła oblicz(6),

i tak dalej"

?

pozdrawiam

Może co innego wpisywałeś w tym blueJ.

przy wywołaniu oblicz(x=4) zostaje wywołane oblicz(x+1) (bo tak masz napisane) czyli oblicz(4+1) czyli oblicz(5),

dalej analogicznie.

był błąd w kodzie. zamian x+oblicz(x+1) miało być x+oblicz(x-1).

i jeszcze ostatnie pytanie. Dlaczego jak uruchomię w funkcji main tą metodę, np oblicz(5) to nie pokazuje nigdzie jaki wynik jest zwracany? tylko po przyciśnięciu run wyskakuje komunikat :

BUILD SUCCESSFUL (total time: 1 second)

pozdrawiam

Ponieważ nigdzie nie wyświetlasz wyniku obliczenia.

no okej, do tego użyje System.out.println

i występuje błąd:

reference to print is ambiguous, both method print(char[]) in java.io.PrintStream and method print(java.lang.String) in java.io.PrintStream match

to znaczy że nie może wyświetlić ponieważ użyta jest rekurencja ?

w jaki sposób to rozwiązać ?

System.out.format(“oblicz(4) zwraca wartość: %d\n”,oblicz(4));

Rekurencja nie ma tu nic do rzeczy, reference = odnośnik, opis.

Pewnie wpisałeś coś niedorzecznego.

public class trojkatne {


    public static void main(String[] args){

oblicz(4);

    }


    public static void oblicz(int x){

    if(x==1)

         System.out.println(x);

    else

        System.out.format ("wynik" ,x+oblicz(x-1)) ;

    }


}

Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - ‘void’ type not allowed here

at lab1.trojkatne.oblicz(trojkatne.java:18)

at lab1.trojkatne.main(trojkatne.java:11)

typ void nie pasuje. to jakiego użyć ?

x+oblicz(x-1)

w jaki sposób zamierzasz dodać do zmiennej x - void który zostanie zwrócony przez oblicz?