Datenaustausch zwischen zwei Activities

  • Antworten:37
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 93

06.04.2020, 19:14:21 via Website

Hallo Leute!

Ich habe eine Test-App mit Hilfe eines Tutorials in Android Studio erstellt, mit der die aktuellen GPS-Daten abgefragt und ausgegeben werden. Soweit so gut. Diese Daten würde ich nun gerne umwandeln. Für das Umwandeln habe ich ein fertiges Java-Programm gefunden welches genau die erforderlichen Berechnungen durchführt. Den Java-Code hätte ich gerne als eigene Activity wobei dann die Werte "lat" und "lon" in der MainActivity an diese Activity mit dem Java-Code übergeben werden sollen. Dort sollen die beiden Werte für die Umwandlung in den "Maidenhead Locator" verwendet und anschließend dieser Wert wieder an die MainActivity übergeben werden.
Bei meiner lang zurückliegenden C++-Ausbildung war leider kurz nach dem Start mit OOP Schluss und jetzt blicke ich nicht mehr ganz durch.
Was mich auch noch etwas verwirrt, sind die beiden Methoden mit gleichem Namen in der "CoordtoLoc-Klasse".
Vielleicht kann mir ja hier jemand bei diesem kleinen Problem helfen.

MainActivity:

public class MainActivity extends AppCompatActivity{

Button btnGetLoc;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnGetLoc = (Button) findViewById(R.id.btnGetLoc);
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 123);

    btnGetLoc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            GPStracker g = new GPStracker(getApplicationContext());
            Location l = g.getLocation();

            if(l != null){
                double lat = l.getLatitude();
                double lon = l.getLongitude();
                Toast.makeText(getApplicationContext(), "LAT: "+lat+ "\n LON: "+lon, Toast.LENGTH_LONG).show();
            }
        }
    });
}

}

GPS-Activity:

public class GPStracker implements LocationListener {

Context context;

public Location getLocation(){

    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(context, "Permission denied", Toast.LENGTH_SHORT).show();
        return null;
    }
    LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);

    if(isGPSEnabled){
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10, this);
        Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        return l;
    }
    else {
        Toast.makeText(context, "Please enable GPS", Toast.LENGTH_LONG).show();
    }
    return null;
}

public GPStracker(Context c){
context = c;
}

}

Hier der Java Code:

public class Location {

String latlon;
String maidenhead;

public Location(String p1, String p2) {
float lat = -100.0f;
float lon = 0.0f;
try {
lat = Float.parseFloat(p1);
lon = Float.parseFloat(p2);

  maidenhead = latLonToGridSquare(lat, lon);
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

}

public Location(float lat, float lon) {
try {
maidenhead = latLonToGridSquare(lat, lon);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void gridSquareToLatLon(String grid) {

}

public String latLonToGridSquare(float lat, float lon) throws Exception{
float adjLat,adjLon;
char GLat,GLon;
String nLat,nLon;
char gLat,gLon;
float rLat,rLon;
String U = "ABCDEFGHIJKLMNOPQRSTUVWX";
String L = U.toLowerCase();

// support Chris Veness 2002-2012 LatLon library and
// other objects with lat/lon properties
// properties could be getter functions, numbers, or strings


if (Float.isNaN(lat)) throw new Exception("lat is NaN");
if (Float.isNaN(lon)) throw new Exception("lon is NaN");
if (Math.abs(lat) == 90.0) throw new Exception("grid squares invalid at N/S poles");
if (Math.abs(lat) > 90) throw new Exception("invalid latitude: "+lat);
if (Math.abs(lon) > 180) throw new Exception("invalid longitude: "+lon);


adjLat = lat + 90;
adjLon = lon + 180;
GLat = U.charAt((int) (adjLat/10));
GLon = U.charAt((int) (adjLon/20));
nLat = ""+(int)(adjLat % 10);
nLon = ""+(int)((adjLon/2) % 10);
rLat = (adjLat - (int)(adjLat)) * 60;
rLon = (adjLon - 2*(int)(adjLon/2)) *60;
gLat = L.charAt((int)(rLat/2.5));
gLon = L.charAt((int)(rLon/5));
String locator = ""+GLon+GLat+nLon+nLat+gLon+gLat;
return locator;

}
}

Antworten
  • Forum-Beiträge: 3.517

06.04.2020, 19:48:21 via Website

Hallo,

ich habe mir erlaubt , deinen Code quer zu lesen.

Ehrlich gesagt, ist dieser in der Struktur grausam und macht es wirklich schwer.
herauszufinden , was wo genau passiert :-)
Der hat auch nichts mir sauberen OOP zu tun und die Permissions-Abfragen sind
da, wo sie eigentlich auch nicht hin gehören :-)

Ergo : Für Android ein wenig ungeeignet und wenig klassenorientiert ausgelagert.

Deshalb beschränke ich mich auf deinen Topic :

Datenaustausch zwischen zwei Activities

Dies bewerkstelligt man mit Intents, Listener, oder Broadcasts

Liebe Grüße - Stefan
[ App - Entwicklung ]

patrickk83

Antworten
  • Forum-Beiträge: 93

06.04.2020, 20:00:19 via Website

Das habe ich mir beinahe gedacht :-)

Daher ist es für mich auch so schwierig das Ganze zu verstehen. Ich habe immer auf klar verständliche Variablendeklarationen gesetzt und auch die Struktur halbwegs durchdacht und sauber gehalten.

Antworten
  • Forum-Beiträge: 1.258

06.04.2020, 20:08:37 via Website

Hallo auch ich habe mir erlaubt deinen Code zu überfliegen.
Alles richtig was bis jetzt gesagt wurde.

Das Was du als GPS Activity bezeichnest ist keine Aptivity sondern eine Klasse die ein Interfase importiert aber nicht von Activity erbt.

Mit einer Avtivity hat das nichts zu tun.

In der Activity erstellst du von jeder Klasse eine Instanz und greifst darauf zu.

Ein Intent wird dir hier nicht viel bringen denn du hast alles in der Activity.
Du hast keine zwei Activitys Datenaustausch mit Intent ist somit nicht sinnvoll.

— geändert am 06.04.2020, 20:09:29

swa00patrickk83

Antworten
  • Forum-Beiträge: 3.517

06.04.2020, 20:32:54 via Website

Jörg (Jokel), mach du bitte weiter - muss noch ein projekt fertig bekommen - thx

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
  • Forum-Beiträge: 1.258

06.04.2020, 20:48:06 via Website

In der MainActivty willst du auf zwei Methoden zugreifen die es nicht gibt.

double lat = l.getLatitude();
double lon = l.getLongitude();

"L" soll ein Objekt von Location sein nur wo hast du davon eine Instanz erstellt? Auch die beiden Methoden gibt es nicht in der Kasse.
Du willst in der GPS Klasse ein Objekt von Location in der Methode „getLocation()“ zurück geben nur hast du gar keins.

Ich glaube es ist besser du suchst dir ein besseres Tutorial in dem gezeigt wird wie du das mit den Lister für den LocationManager machst.

— geändert am 06.04.2020, 21:10:51

patrickk83

Antworten
  • Forum-Beiträge: 1.258

06.04.2020, 20:54:33 via Website

Was mich auch noch etwas verwirrt, sind die beiden Methoden mit gleichem Namen in der "CoordtoLoc-Klasse".

Das sind zwei Konstruktor mit unterschiedlichen Parameter.
Eine überladene Methode. Nennt man das bei OOP .
Ein Konstruktor wird beim Instanziieren der Kasse aufgerufen der wird bei dir gar nicht benutzt. Hast somit gar keine Instanz Objekt davon.

https://www.androdocs.com/java/getting-current-location-latitude-longitude-in-android-using-java.html

— geändert am 06.04.2020, 21:09:21

patrickk83

Antworten
  • Forum-Beiträge: 93

06.04.2020, 21:12:16 via Website

Es wird langsam aber sicher etwas heller... Habe eine gute Seite gefunden auf der (für mich zumindest) verständlich das Grundlegende vermittelt wird.

Kannst du ein Tut empfehlen? Auf yt weiss man leider vorher nie ob das Gezeigte auch brauchbar/korrekt ist. Habe wegen dem GPS ohnehin mehrere Tutorials durch bzw. nachgemacht...

Das Komische ist nur, dass meine aktuellen Koordinaten trotzdem korrekt mit der Toast-Message angezeigt werden :-)

Antworten
  • Forum-Beiträge: 1.258

06.04.2020, 21:23:22 via Website

nein habe ich jetz leider nicht bei der Hand.

wenn der Toast richtig kommt. hasst du uns den gesamten Code gegeben?

und wenn es geht wo ist den eigentlich dein Problem.

Ps.
Das der Toast geht ist auch nicht so verwunderlich denn „Location“ ist eine Klasse von Android. Da du diese bestimmt bei dem Imports hast wird auch die benutzt. Und nicht deine.
Und da gibt es auch die beiden Methoden.

https://developer.android.com/reference/android/location/Location

und der Manager gibt dir auch das richtige Objekt zurück.
Habe es leider auch erst jetzt gesehen. Sorry

Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

— geändert am 06.04.2020, 21:36:56

Antworten
  • Forum-Beiträge: 93

06.04.2020, 21:28:41 via Website

Es ist der ganze Code, ja (ohne den imports natürlich).
Naja, das Problem war/ist das grundlegende Verständnis. Jetzt habe ich in der Zwischenzeit mal wenigstens verstanden was der Unterschied zwischen Konstruktor und Methode ist :-) Ich werde mal den Beitrag aus deinem Link durcharbeiten und mich dann wieder kurz melden wenn ich darf.

Antworten
  • Forum-Beiträge: 93

07.04.2020, 10:00:00 via Website

Guten Morgen,

habe jetzt einiges gelesen. Also die App für die "Current location" funktioniert mal. Jetzt möchte ich diese mit einem Button erweitern der bei click die Werte der Variablen "lat" und "lon" an die Methode CoordToLoc(String p1, String p2) übergibt. Diese sollen dort dann umgewandelt werden und anschlileßend wieder in einem Textview ausgegeben werden.

MainActivity.java:
public class MainActivity extends AppCompatActivity {

int PERMISSION_ID = 44;
FusedLocationProviderClient mFusedLocationClient;
TextView latTextView, lonTextView;

Button btGetLocator;

private double lat;
private double lon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btGetLocator = (Button)findViewById(R.id.btnGetLoc);

    latTextView = findViewById(R.id.latTextView);
    lonTextView = findViewById(R.id.lonTextView);
    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

    getLastLocation();

    CoortToLoc objCoord = new CoordToLoc(double, double);

    //On Button click
    btGetLocator.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            objCoord.CoordToLoc(lat, lon);
            Toast.makeText(getApplicationContext(), "LAT: "+lat+ "\n LON: "+lon, Toast.LENGTH_LONG).show();
        }
    });
}

@SuppressLint("MissingPermission")
private void getLastLocation() {
    if (checkPermissions()) {
        if (isLocationEnabled()) {
            mFusedLocationClient.getLastLocation().addOnCompleteListener(
                    new OnCompleteListener<Location>() {
                        @Override
                        public void onComplete(@NonNull Task<Location> task) {
                            Location location = task.getResult();
                            if (location == null) {
                                requestNewLocationData();
                            } else {
                                lat = location.getLatitude();
                                lon = location.getLongitude();
                                //latTextView.setText(location.getLatitude() + "");
                                //lonTextView.setText(location.getLongitude() + "");
                                latTextView.setText("Latitude: "+lat);
                                lonTextView.setText("Longitude: "+lon);
                            }
                        }
                    }
            );
        } else {
            Toast.makeText(this, "Turn on location", Toast.LENGTH_LONG).show();
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);
        }
    } else {
        requestPermissions();
    }
}


@SuppressLint("MissingPermission")
private void requestNewLocationData() {

    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(0);
    mLocationRequest.setFastestInterval(0);
    mLocationRequest.setNumUpdates(1);

    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    mFusedLocationClient.requestLocationUpdates(
            mLocationRequest, mLocationCallback,
            Looper.myLooper()
    );

}

private LocationCallback mLocationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        Location mLastLocation = locationResult.getLastLocation();
        latTextView.setText(mLastLocation.getLatitude() + "");
        lonTextView.setText(mLastLocation.getLongitude() + "");
    }
};

private boolean checkPermissions() {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        return true;
    }
    return false;
}

private void requestPermissions() {
    ActivityCompat.requestPermissions(
            this,
            new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION},
            PERMISSION_ID
    );
}

private boolean isLocationEnabled() {
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || locationManager.isProviderEnabled(
            LocationManager.NETWORK_PROVIDER
    );
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == PERMISSION_ID) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            getLastLocation();
        }
    }
}

@Override
public void onResume() {
    super.onResume();
    if (checkPermissions()) {
        getLastLocation();
    }

}

}

CoordToLoc.java:

package com.example.gpstest;

public class CoordToLoc extends MainActivity{

    String maidenhead;

    public CoordToLoc(String p1, String p2) {

        float lat = -100.0f;
        float lon = 0.0f;

        try {
            lat = Float.parseFloat(p1);
            lon = Float.parseFloat(p2);

            maidenhead = latLonToGridSquare(lat, lon);
        }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public CoordToLoc(float lat, float lon) {
        try {
            maidenhead = latLonToGridSquare(lat, lon);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /*
    private void gridSquareToLatLon(String grid) {

    }*/

    public String latLonToGridSquare(float lat, float lon) throws Exception{
        float adjLat,adjLon;
        char GLat,GLon;
        String nLat,nLon;
        char gLat,gLon;
        float rLat,rLon;
        String U = "ABCDEFGHIJKLMNOPQRSTUVWX";
        String L = U.toLowerCase();

        // support Chris Veness 2002-2012 LatLon library and
        // other objects with lat/lon properties
        // properties could be getter functions, numbers, or strings


        if (Float.isNaN(lat)) throw new Exception("lat is NaN");
        if (Float.isNaN(lon)) throw new Exception("lon is NaN");
        if (Math.abs(lat) == 90.0) throw new Exception("grid squares invalid at N/S poles");
        if (Math.abs(lat) > 90) throw new Exception("invalid latitude: "+lat);
        if (Math.abs(lon) > 180) throw new Exception("invalid longitude: "+lon);


        adjLat = lat + 90;
        adjLon = lon + 180;
        GLat = U.charAt((int) (adjLat/10));
        GLon = U.charAt((int) (adjLon/20));
        nLat = ""+(int)(adjLat % 10);
        nLon = ""+(int)((adjLon/2) % 10);
        rLat = (adjLat - (int)(adjLat)) * 60;
        rLon = (adjLon - 2*(int)(adjLon/2)) *60;
        gLat = L.charAt((int)(rLat/2.5));
        gLon = L.charAt((int)(rLon/5));
        String locator = ""+GLon+GLat+nLon+nLat+gLon+gLat;
        return locator;
    }

}

Wenn ich das jetzt richtig verstehe so ist in der CoordToLoc.java eine Klasse mit Namen CoordToLoc enthalten. In dieser Klasse befinden sich zwei Konstruktoren. Benötigen würde ich in meinem Fall den zweiten:

public CoordToLoc(float lat, float lon) {
        try {
            maidenhead = latLonToGridSquare(lat, lon);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Ich müsste also die beiden Werte für lat und lon in der MainActivity an diesen Konstruktor übergeben.
Benötige ich da jetzt ein Intent? Wenn alles in der MainActivity stehen würde so könnte ich doch ein Objekt der Klasse CoortToLoc erzeugen und dann den Konstruktor inkl. übergebenen Werten aufrufen:

CoordToLoc objCTL = new CoordToLoc(float, float); //vor onCreate()
//Button-Click Listener:

objCTL.CoordToLoc(lat, lon);
//Ausgabe mit einem Toast
Toast ---> Der locator den ich benötige sollte in der variable "maidenhead" gespeichert sein?!

Bitte um weitere Hilfe

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.805

07.04.2020, 10:43:35 via App

Hallo Patrick,

herzlich willkommen hier im Forum (*)

wegen der permission Verwaltung kannst du hier in meinem Projekt schauen: https://github.com/Ludy87/AndroidPIT/tree/master/LocalLocation

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Download Samsung Firmware Tool

Meine Wunschliste

Telegram News Feed

patrickk83

Antworten
  • Forum-Beiträge: 93

07.04.2020, 10:50:09 via Website

Die Abfragen mit den permissions habe ich halbwegs verstanden. Was ich nicht richtig verstehe ist der Datenaustausch zwischen MainActivity und dem Code in der Datei CoordToLoc.java. Letzteres ist ja keine Activity sondern nur eine Klasse mit einer Methode mit mathematischen Berechnungen. Einerseits möchte ich an diese Methode zwei Werte übergeben und andererseits möchte ich das Ergebnis der Berechnung in der MainActivity weiterverwenden (in diesem Fall in einem TextView).

Antworten
  • Forum-Beiträge: 11.031

07.04.2020, 12:05:49 via Website

Eine Klasse liefert dir das Werkzeug für z.b. Berechnungen.

Und wenn du dich ein wenig über Objektorientierung und Klassen etc. eingelesen hast, wüsstest du folgendes:

  • Eine Klasse ist "Vorlage" für ein Objekt und enthält Code für Berechnugen, Ausgaben etc.
  • Ein Objekt ist eine Instanz der Klasse, also eine Entität in der dann auch Daten gehalten werden können
  • I.d.r können belibig viele Objekte erstellt werden.
  • Eingaben werden über Parameter der Methoden übergeben
  • Rückgabewerte sind über Methoden definierbar und auch weiter benutzbar

Also Parameter für Methodeninputs hast du ja schon. Ausgaben gehen so:

public ausgabetyp (z.b. String, int,...) Methondenname(Parameter...){
//methodencode
return myValue; //Berechneten Wert zurückgeben, typ muss dem definieren Rückgabetyp entsprechen
}
Genauer schaust du dir aber bitte nach: https://www.tutorialspoint.com/java/java_object_classes.htm
Wir können dir hier nicht die kompletten Java Grunladen vermitteln sondern nur konkrete Fragen beantworten

LG Pascal //It's not a bug, it's a feature. :) ;)

Jokel

Antworten
  • Forum-Beiträge: 93

07.04.2020, 12:31:52 via Website

Das verstehe ich soweit. Ich weiss aber nicht wie ich nun einen Wert aus dem konkreten Beispiel an den Konstruktor übergebe. Nehmen wir mal die Variablen "lat" und "lon" vom typ double aus der MainActivity. Diese möchte ich an den Konstruktor CoordToLoc der zwei Werte erwartet, übergeben. Wie muss ich das in der MainActivity korrekt eingeben?
Meine Vorgehensweise wäre:
- Objekt der Klasse CoordToLoc vor der onCreate() erstellen: CoordToLoc objCOL = new CoordtoLoc (float, float);
- innerhalb des onClickListeners des Buttons: objCOL.CoordToLoc(float lat, float lon);
- Berechnung in einem TextView in der MainActivity anzeigen: locTextView.setText("Locator: ",+objCOL.maidenhead);

CoordToLoc objCOL = new CoordtoLoc (float, float); bringt allerdings ein ".class expected"

— geändert am 07.04.2020, 12:50:34

Antworten
  • Forum-Beiträge: 11.031

07.04.2020, 12:52:24 via Website

CoordToLoc objCOL = new CoordtoLoc (float, float);

Nein, float ist ein Datentyp, als Parameter muss aber eine Variable rein.

Also eher:

CoordToLoc objCOL = new CoordtoLoc (lat, lon); //Weil lat/lon in MainActitivy definiert 

//wenn du es richtig machst brauchst du hier keine Parameter mehr, weil schon im Konstruktor

objCOL.CoordToLoc(); 

Jetzt brauchst du noch einen Rückgabewert als String, den musst du in der Klasse zwischenspeichern, da die Location per Listener rein kommt.

Was ist dann die konkrete Frage?
Wie ein Rückgabewert funktioniert weißt du, dann versuch es mal, wenn du nicht weiter kommst, sag bescheid.

LG Pascal //It's not a bug, it's a feature. :) ;)

patrickk83

Antworten
  • Forum-Beiträge: 1.258

07.04.2020, 15:13:53 via Website

Objekt der Klasse CoordToLoc vor der onCreate() erstellen: CoordToLoc objCOL = new CoordtoLoc (float, float);

nein die Objekt Variable im Klassen Rumpf.
das etstelle des Objekte mit new in der onCrate.
ein Konstruktor hat keinen Rückgabe wert das ist die Intanz.

Eine Rückgabe über eine Methode getter, setter die du über die Instanz in der main aufrufst.
Wenn du in dem Listner ein neues Objekt erstellst ist das ein anderes als da was du in der onCreate erstellt hast.

mit dem "new" wird immer der Konstruktor aufgerufen und immer ein neues Objekt erstelt das eine weiß von dem anderen nichts.
das geht so nicht .
Erstelle dir getter und setter Methoden in der Kasse um auf Inhalte Member von ausen zuzugreifen.

Pascal P.patrickk83

Antworten
  • Forum-Beiträge: 1.258

07.04.2020, 15:49:22 via Website

Hallo habe gerade in deinen letzten Code gesehen das deine zweite Klasse der Versuch ist eine activity zu werden.
Denn du erbst da von mainactivity.
Warum das?
Somit bekommst du auch nicht den context der activity wenn das der Grund dafür sein sollte.

Im allgemeinen macht man das etwas anders. Im Konstruktor übergibt man den context wen der in der Klasse gebraucht wird. Speichert ihn dort in einer klassen Variablen.
Zur Berechnung erstellt man eine Methode in der Klasse der du die Parameter übergibst und ewentuell auch gleich den Rückgabe Wert.
Oder die
Rückgabe in einer anderen Methode.

Das alles im Konstruktor machen zu wollen ist kein schöner Stil. Wirst du so auch nicht gelernt haben.

Was mir bei deinem Code auffällt ist das bestimmt nicht den Unterschied zwischen lokalen und Klassen Variablen weißt.

— geändert am 07.04.2020, 16:04:51

Pascal P.

Antworten
Empfohlene Artikel bei NextPit