Jak dalej użyć return

0

Witam, od razu powiem, że w programowaniu jestem zielony. Muszę na zajęcia napisać program który liczy współrzędne. W jednej klasie mam głównie tekst i pobieranie danych :
public class Konsola {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	Punkt punkt = new Punkt();
	Obliczenia obl = new Obliczenia();
	
	Scanner dane = new Scanner(System.in);
	
	System.out.println(" Program do transformacji między układami z BLH na XYZ lub XYZ na BLH");
	System.out.println(" Podaj między jakimi układami chcesz przeliczyć:");
	System.out.println("1. XYZ -> BLH");
	
	
	punkt.uklad = dane.nextDouble();
	
	if (punkt.uklad == 1)
	{
System.out.println(" Program używa współrzędnych w ukłądzie 2000 np: X = 5968899,493 ");
		
		System.out.println(" Podaj X:");
		punkt.X = dane.nextDouble();
		
		
		System.out.println(" Podaj Y:");
		punkt.Y = dane.nextDouble();
		
		
		System.out.println(" Podaj Z:");
		punkt.Z = dane.nextDouble();
		
		
		System.out.println(" Jakiej chcesz użyć elipsoidy:");
		System.out.println("1. Krasowskiego");
		System.out.println("2. WGS-84");
		
		punkt.elipsoida = dane.nextDouble();
		if (punkt.elipsoida == 1)
		{
			System.out.println("1. Krasowskiego");
		//	System.out.printf(" Współrzędna B= %.3f%n", + obl.B1());
		//	System.out.printf(" Współrzędna L= %.3f%n", + obl.L1());
		//	System.out.printf(" Współrzędna H= %.3f%n", + obl.H1());
			
		}
		else if (punkt.elipsoida == 2)
		{
			System.out.println("2. WGS-84");
			
			
		         System.out.printf(" Współrzędna XY1= %.3f%n", + obl.XY1());
			System.out.printf(" Współrzędna XY2= %.3f%n", + obl.XY2);
		//	System.out.printf(" Współrzędna L= %.3f%n", + obl.L2());
		//	System.out.printf(" Współrzędna H= %.3f%n", + obl.H2());
		//	System.out.printf(" Współrzędna N= %.3f%n", + obl.N2());
		
			
			
		}
		else 
		{
			System.out.print("Nie wybrałeś elipsoidy!");
		}
	}

}
}
w innej klasie mam przechowywane dane :
import java.util.Scanner;
import static java.lang.Math.*;
import java.math.BigDecimal;

public class Punkt {

double uklad;
public static double X;
public static double Y;
static double Z;
double elipsoida;
static double B;
static double L;
static double H;
static double Bp = 0.45379;
static double Lp = 0.88397;

//1. Krasowski
static int a1 = 6378245;
static double b1 = 6356863.019;
//e^2
static double e1 = 0.00669342;

//2. WGS-84
static int a2 = 6378137;
static double b2 = 6356752.314;
//e^2
static double e2 = 0.00669438;
static int potega = 2; 

}

a w trzeciej klasie mam obliczenia :

import java.util.Scanner;
import static java.lang.Math.*;
import java.math.BigDecimal;

public class Obliczenia extends Punkt{

double XY1()
{
return X+Y;
}

double XY2 = X+Y;
}

Moje pytanie brzmi :
Jak użyć gdzieś później XY1 ponieważ jedynie to mi wypluwa jakieś liczby, XY2 wypluwa mi 0 :(

0

Moje pytanie brzmi :
Jak użyć gdzieś później XY1 ponieważ jedynie to mi wypluwa jakieś liczby, XY2 wypluwa mi 0 :(

Odpowiedź masz w kodzie:

double XY1()
{
   return X+Y;
}

typem zwracanym jest double więc metoda zwraca liczbę rzeczywistą, w ciele metody widzimy, że zwracamy sumę pól X+Y.
Jeżeli te zmienne klasowe zostały dobrze zainicjalizowane wcześniej to nie widzę tutaj pola do pomyłki, chyba że chcesz uzyskać inny rezultat.
Żeby skorzystać z metody XY1() należy utworzyć instancję klasy Obliczenia i na niej wywołać daną metodę - kod poniżej

public class JanKowalczyk {

    public static void main(String[] args) {
        Obliczenia obj = new Obliczenia();
        obj.X = 1.0;
        obj.Y = 2.0;
        System.out.println(obj.XY1());
    }
}

class Punkt {
    static double X;
    static double Y;
}

class Obliczenia extends Punkt{

    double XY1() {
        return X+Y;
    }
}

Zachęcam do korzystania z getterów i setterów
Kod ten ma sporo błędów

0

A jak klasie obliczenia chciałabym stworzyc
Double XY3 = XY2() + 4;
Double XY4 = XY3() + 10;
?
I dlaczego jak użyje w obliczeniach return to korzysta z X i Y a jak wezme po prostu XY2 = X+Y; to juz nie korzysta ?
Przepraszam za moją ciemnotę

0
Jan Kowalczyk napisał(a):

A jak klasie obliczenia chciałabym stworzyc
Double XY3 = XY2() + 4;
Double XY4 = XY3() + 10;
?
I dlaczego jak użyje w obliczeniach return to korzysta z X i Y a jak wezme po prostu XY2 = X+Y; to juz nie korzysta ?
Przepraszam za moją ciemnotę

W momencie tworzenia instancji klasy Obliczenia X i Y jest zerem z automatu, wieć zmienna klasowa XY2 jest również równa 0. Mówiąc inaczej, pole to jest inicjalizowane przed przypisaniem wartośći do X i Y. Nie wiem jaki masz cel, żeby XY2 przechowywała sumę tych dwóch elementów, ale możesz stworzyć konstruktor, który przypiszę odpowiednią wartość.

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