Funkcje w Javie

0

Witam,
mam za zadanie napisać funkcję, która będzie mnożyła dwie macierze. Z mnożeniem macierzy sobie poradziłem, problem mam za to z funkcjami w Javie. Próbowałem ogarnąć to z książek, ale dla mnie to co tam było jest nie zrozumiałem (albo jestem za mało kumaty po prostu). Pytanie pierwsze: czy funkcja w Javie to to samo co metoda?

Znalazłem coś na forach jak się robi funkcję, no i tak zrobiłem, czyli (dla uproszczenia zwykła funkcja dodawania, odpuśćmy macierze):

import java.util.Scanner;
import java.awt.*;
public class kalkulator
{
public int dodaj(int a, int b)
{
return a+b;
}

public void main(String[] args)
{ int a, b, w;
Scanner input = new Scanner (System.in);
a=input.nextInt();
b=input.nextInt();

    w=dodaj(a, b);
    System.out.println(w);
} 

}

Kompiluje, błędy nie wyskakują, ale w BlueJ-u nie mogę wywołać metody main. Jeżeli dodałbym static void to pewnie mógłbym, ale wyrzuca mi błąd przy kompilowaniu: non-static method dodaj(a,b) cannot be referenced from a static context.
Czy mógłby mi ktoś pokrótce wyjaśnić jak się robi w Javie funkcje / metody?
Będę wdzięczny:)

1

W Javie nie ma funkcji globalnych, są tylko metody w klasach. W Twoim kodzie masz dwie możliwości (w kążdej z nich metoda main musi być static):

  1. metoda dodaj też będzie static,
  2. utworzysz w metodzie main obiekt swojej klasy i na jego rzecz wywołasz metodę dodaj.
0

dzieki za odpowiedź. Z tego co zrozumiałem:
ad1. dodaje przed "int dodaj(int a, int b)" napis "static"? Tak zrobiłem, nie wyświetliło błędu, odpaliłem main ale zamuliło i trzeba bylo zresetowac jave.
ad2. nie zrozumiałem. Chodzi o coś takiego: new dodaj() ?

1

ad 1. Zamuliło, bo czekało żebyś wprowadził liczby.
ad 2. Chodzi o coś takiego

import java.util.Scanner;
import java.awt.*;
public class kalkulator
{
      public int dodaj(int a, int b)
      {
        return a+b;
       }

   public static void main(String[] args)
    {   int a, b, w;
        Scanner input = new Scanner (System.in);
        a=input.nextInt();
        b=input.nextInt();
        kalkulator kalk=new kalkulator();
        w=kalk.dodaj(a, b);
        System.out.println(w);
    }
}
0

Jak wpisałem "kalk=new kalkulator();" wyświetliło błąd, że nieznany typ. Wpisałem więc: "kalkulator kalk=new kalkulator();" - skompilowało, jednak po uruchomieniu programu zamuliło, tak jak w poprzednim przypadku i chyba nie dlatego, ze czeka aż podam liczby, bo wyskoczył by terminal. Między uruchomieniem programu a wyskoczeniem terminala BlueJ się wiesza i trzeba korzystać z opcji: Reset Java Virtual Machine.

1

Widocznie BjueJ jest do d*y. Otwórz konsolę (terminal), zmień katalog i wpisz java kalkulator.

0

no działa! Zna ktoś może jakiś sposób zeby tez w BlueJ-u działało normalnie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1