Code kürzen

  • 5 Antworten
  • Letztes Antwortdatum
ui_3k1

ui_3k1

Gesperrt
197
Hey Leute,

ich habe einen .java Code, den man bestimmt noch etwas kürzen könnte, sprich mit Funktionen zusammenfassen kann.

Es ist eine Art Taschenrechner für Brüche, derzeit lege ich bei jedem onClickListener die Variablen zu Beginn neu an, das kann wahrscheinlich optimiert werden... Allerdings habe ich mit Java noch nicht so viel Erfahrung, als dass ich wüsste, wie man das am besten realisiert.

Ich habe mal den "Plus"- und den "Minus"-Button als Code beigefügt.

Code:
public class Calc extends Activity {

    EditText z1Calc, n1Calc, z2Calc, n2Calc;
    TextView tvZerg, tvNerg, tvUpperLvl, tvDwnLvl, tvOpera;
    Button bAdd, bSubt, bMulti, bDivi;

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

        bAdd = (Button) findViewById(R.id.bPlus);
        bSubt = (Button) findViewById(R.id.bMinus);
        bMulti = (Button) findViewById(R.id.bMul);
        bDivi = (Button) findViewById(R.id.bDiv);

        z1Calc = (EditText) findViewById(R.id.gz1);
        n1Calc = (EditText) findViewById(R.id.gn1);
        z2Calc = (EditText) findViewById(R.id.gz2);
        n2Calc = (EditText) findViewById(R.id.gn2);

        tvOpera = (TextView) findViewById(R.id.opC);
        tvZerg = (TextView) findViewById(R.id.outZ);
        tvNerg = (TextView) findViewById(R.id.outN);

        bAdd.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                String giveZ1;
                String giveN1;
                String giveZ2;
                String giveN2;
                int giveIntZ1, giveIntN1, giveIntZ2, giveIntN2;
                int solvedZ, solvedN;

                giveZ1 = z1Calc.getText().toString();
                giveN1 = n1Calc.getText().toString();
                giveZ2 = z2Calc.getText().toString();
                giveN2 = n2Calc.getText().toString();

                if (z1Calc.getText().toString().length() == 0) {
                    return;
                }

                if (n1Calc.getText().toString().length() == 0) {
                    return;
                }

                if (z2Calc.getText().toString().length() == 0) {
                    return;
                }

                if (n2Calc.getText().toString().length() == 0) {
                    return;
                }

                giveIntZ1 = Integer.parseInt(giveZ1);
                giveIntN1 = Integer.parseInt(giveN1);
                giveIntZ2 = Integer.parseInt(giveZ2);
                giveIntN2 = Integer.parseInt(giveN2);

                solvedZ = (giveIntZ1 * giveIntN2) + (giveIntN1 * giveIntZ2);
                solvedN = (giveIntN1 * giveIntN2);

                Euklid varadd = new Euklid();
                int k = varadd.cancelDown(solvedZ, solvedN);

                solvedZ /= k;
                solvedN /= k;

                tvOpera.setText("+");
                tvZerg.setText(String.valueOf(solvedZ));
                tvNerg.setText(String.valueOf(solvedN));

            }
        });

        bSubt.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                String giveZ1;
                String giveN1;
                String giveZ2;
                String giveN2;
                int giveIntZ1, giveIntN1, giveIntZ2, giveIntN2;
                int solvedZ, solvedN;

                giveZ1 = z1Calc.getText().toString();
                giveN1 = n1Calc.getText().toString();
                giveZ2 = z2Calc.getText().toString();
                giveN2 = n2Calc.getText().toString();

                if (z1Calc.getText().toString().length() == 0) {
                    return;
                }

                if (n1Calc.getText().toString().length() == 0) {
                    return;
                }

                if (z2Calc.getText().toString().length() == 0) {
                    return;
                }

                if (n2Calc.getText().toString().length() == 0) {
                    return;
                }

                giveIntZ1 = Integer.parseInt(giveZ1);
                giveIntN1 = Integer.parseInt(giveN1);
                giveIntZ2 = Integer.parseInt(giveZ2);
                giveIntN2 = Integer.parseInt(giveN2);

                solvedZ = (giveIntZ1 * giveIntN2) - (giveIntN1 * giveIntZ2);
                solvedN = (giveIntN1 * giveIntN2);

                if (solvedZ < 0 || solvedN < 0) {
                    tvOpera.setText("-");
                    tvZerg.setText(String.valueOf(solvedZ));
                    tvNerg.setText(String.valueOf(solvedN));
                    return;
                }

                Euklid varsub = new Euklid();
                int k = varsub.cancelDown(solvedZ, solvedN);

                solvedZ /= k;
                solvedN /= k;

                tvOpera.setText("-");
                tvZerg.setText(String.valueOf(solvedZ));
                tvNerg.setText(String.valueOf(solvedN));

            }
        });

Danke vorab!
Martin
 
Also ich würde auf jedenfall ne eigene Klasse als dein ClickListener bauen, von der kannst du dann erben und nur die teile die sich unterscheiden in den jeweiligen eigenen klasse implementieren
 
  • Danke
Reaktionen: ui_3k1
Du kannst auch den onclicklistener implementieren, danach wirst du aufgefordert die onlick Methode zu implementieren, in dieser kannst du dann via Switch Case die Buttons Abfragen ... Dort rufst du dann Methoden aus einer Helfer klasse auf , diese dir das Ergebnis zurück liefern ... So kannst du leichter Methoden bzw weitere rechenoperationen hinzufügen und deine eigentliche klasse bläht sich nicht weiter auf
 
  • Danke
Reaktionen: ui_3k1
Wirklich hinbekommen habe ich es noch nicht.
Vielleicht sollte ich doch nochmal tiefer in Java einsteigen..

Oder habt ihr vielleicht noch ein kleines Tutorial, in dem das Beschrieben wird?
 
Was bekommst du nicht hin?

Ich hab es durch mein Beruf gelernt ... Aber im
Gründe genommen ist dass das Model-view-Controller Prinzip
 
  • Danke
Reaktionen: ui_3k1
okay, dann werde ich dazu mal Google befragen. :)

Bin gerade auch an DirectX dran, mal sehen was mich da für Abenteuer erwarten :p
 
Zurück
Oben Unten