Wątek przeniesiony 2016-06-15 08:46 z Java przez bogdans.

poprawne wywołanie metody

0

Chcę stworzyć 2 metody, jedna ma sczytywać promień koła i przekazywać go do innej która będzie przy jego pomocy obliczała pole i je zwracała do głównej metody programu. Bedę bardzo wdzięczny za sugestie gdzie popełniłem błąd

http://pastebin.com/mWhkrj6u

1
  1. Wczytujesz wartść w metodzie skan ale NIC Z NIĄ NIE ROBISZ. Zalecam na przykład zwrócić ją z tej funkcji.
  2. Próbujesz wywołać metodę pole() która wymaga argumentu r ale wcale go nie podajesz przy wywołaniu.

Generalnie błąd polega na tym że nie rozumiesz co robisz. Skleiłeś kod z jakiegoś gotowca ale nie wiesz co oznacza którakolwiek linijka tego kodu.

0

Postaram się mniej więcej napisać to co mam w głowie

nie bardzo rozumiem "zwrócić ją z tej funkcji." jest to metoda void która nie zwraca wartości, myślałem że wywołując w mainie metodę skan(); będę mógł potem użyć wartości zawartej w zmiennej r, którą ort! do metody pole() poprzez pole(r)

0

To nie działa bo r istnieje tylko lokalnie w funkcji skan()
Możesz mieć 10 funkcji i w każdej zmienną o nazwie r ale to nie będzie ta sama zmienna tylko lokalna dla każdej funkcji

0

Masz dwie możliwości:
r jest zmienną lokalną i trzeba ją przekazywać

import java.util.Scanner;

public class nauka {

	public static double skan() {
		System.out.println("podaj promien");
		Scanner sk = new Scanner(System.in);
		return sk.nextDouble();
	}

	public static double pole(double r) {		
		return = Math.PI * r*r;
	}
	public static void main(String[] args) {
		double r = skan();
		System.out.println("pole koła wynosi" + pole(r));
	}
}

r jest polem w klasie, widocznym w każdej metodzie

import java.util.Scanner;

public class nauka {
        double static r;
	public static void skan() {
		System.out.println("podaj promien");
		Scanner sk = new Scanner(System.in);
		r = sk.nextDouble();
	}

	public static double pole() {		
		return Math.PI * r*r;
	}
	public static void main(String[] args) {
		skan();
		System.out.println("pole koła wynosi" + pole());
	}
}
0

@Czarny Kaczor przespałeś wykład kiedy była mowa o zasięgu zmiennych. Zmienna jest widoczna generalnie tylko w zasięgu { i } którymi jest otoczona.

void f(){
  int x = 1; //tutaj x istnieje
  if(cośtam){
      int y = 2; //tutaj y istnieje
  }
  // tutaj y już nie ma! ale x nadal jest
}
// tutaj nie ma już ani x ani y

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