# Falsche ausgabe einer Rechnung!



## brilzi89 (11. Dez 2018)

Hallo zusammen, 
bin neu in der Welt von Java, aber Arbeite mich gut voran. Nun bin ich an einem Punkt wo ich nicht mehr weiter komme und ich eure Hilfe brauche.
Ich arbeite an einer App zur berechnung der Ladungssicherung.
Zur Probe habe ich mal 3 Zahlen und einen Spinner ( der verschiedene Werte hat) addiert.
Nun folgendes Problem.
Wenn ich Zahl1 (1) + Zahl2 (1) + Zahl3 (1) + Spinner (0,4) addieren lassen möchte kommt statt 3,4 nur 30,4 raus. Weis einer was ich falsch mache.

Hier mal die ganze Activity;


```
public class Ladungssicherung extends AppCompatActivity implements AdapterView.OnItemSelectedListener {




    private EditText winkelinput;
    private String text;


    Dialog epicDialog;
    TextView unicode, ergebnissFeld;
    ImageView muinfoButton, closemuButton, infoalphaButton;

    @SuppressLint("StringFormatInvalid")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_ladungssicherung);

        winkelinput = (EditText)findViewById(R.id.winkelInput);
        ergebnissFeld= (TextView)findViewById(R.id.ergebniss);


        SharedPreferences sharedPreferences = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
        text = sharedPreferences.getString("text", "");
        winkelinput.setText(text);
        sharedPreferences.edit().remove("text").commit();

    epicDialog = new Dialog(this, android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen);


        muinfoButton = (ImageView) findViewById(R.id.infomuIcon);
        closemuButton = (ImageView)findViewById(R.id.closemuinfo);
        infoalphaButton = (ImageView)findViewById(R.id.infoalpha);

        muinfoButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showmuinfo();


            }
        });

        infoalphaButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showalphawinkel();
            }
        });


        //Spinner code
        Spinner spinner = findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.numbers, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);



    }

    public void showalphawinkel(){

       Intent intent = new Intent(this, WinkelmessActivity.class);
       startActivity(intent);


    }




    public void showmuinfo(){

        epicDialog.setContentView(R.layout.muinfo);
        closemuButton = (ImageView) epicDialog.findViewById(R.id.closemuinfo);

        closemuButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                epicDialog.dismiss();
            }
        });

        epicDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        epicDialog.show();
    }





        @Override
        public void onItemSelected (AdapterView < ? > parent, View view,int position, long id){

    }

        @Override
        public void onNothingSelected (AdapterView < ? > parent){

    }

        public void ergebnissFromel(View view){

        EditText feld1 = (EditText) findViewById(R.id.gewichtInput);
        EditText feld2 = (EditText) findViewById(R.id.winkelInput);
        EditText feld3 = (EditText) findViewById(R.id.stfInput);
        Spinner feld4 = (Spinner) findViewById(R.id.spinner1);

        Integer zahl1 = Integer.parseInt(feld1.getText().toString());
        Integer zahl2 = Integer.parseInt(feld2.getText().toString());
        Integer zahl3 = Integer.parseInt(feld3.getText().toString());


        String spinner = feld4.getSelectedItem().toString();

        ergebnissFeld.setText(String.valueOf(zahl1+zahl2+zahl3+spinner));

        }
}
```


----------



## httpdigest (11. Dez 2018)

Das Problem ist, dass spinner vom Typ String ist und somit keine arithmetische Addition sondern eine String-Konkatenation von "3" (implizit aus dem Integer 3 in einen String konvertiert) + "0,4" stattfindet.


----------



## brilzi89 (11. Dez 2018)

hättest du einen Tipp wie ich es machen könnte?


----------



## httpdigest (11. Dez 2018)

ergebnissFeld.setText(String.valueOf(zahl1+zahl2+zahl3+Float.valueOf(spinner)));


----------



## brilzi89 (11. Dez 2018)

sobald ich die Zahlen eingebe und auf den Button drücke bricht die App ab.

Logcat zeigt folgendes:

12-11 20:40:50.203 32598-32598/com.example.michi.trucki E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.michi.trucki, PID: 32598
    java.lang.IllegalStateException: Could not execute method for androidnClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
        at android.view.View.performClick(View.java:5675)
        at android.view.View$PerformClick.run(View.java:22641)
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
        at android.view.View.performClick(View.java:5675)
        at android.view.View$PerformClick.run(View.java:22641)
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
     Caused by: java.lang.NumberFormatException: For input string: "0,1"
        at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306)
        at java.lang.Float.valueOf(Float.java:424)
        at com.example.michi.trucki.Ladungssicherung.ergebnissFromel(Ladungssicherung.java:141)
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
        at android.view.View.performClick(View.java:5675)
        at android.view.View$PerformClick.run(View.java:22641)
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
12-11 20:40:50.208 905-2510/? W/ActivityManager:   Force finishing activity com.example.michi.trucki/.Ladungssicherung
12-11 20:40:50.211 1444-1448/? E/GED: Failed to execute ioctl 3222824709, BridgeID(5), err(-1)
12-11 20:40:50.211 1444-1448/? E/GasService: Error on query GED info, err=1


----------



## Robat (11. Dez 2018)

brilzi89 hat gesagt.:


> Caused by: java.lang.NumberFormatException: For input string: "0,1"


Du musst die Zahl als `0.1` eingeben


----------



## httpdigest (11. Dez 2018)

Ach so, ja, dann so:

```
ergebnissFeld.setText(String.valueOf(zahl1+zahl2+zahl3+Float.valueOf(spinner.replace(',', '.'))));
```


----------



## brilzi89 (11. Dez 2018)

Robat hat gesagt.:


> Du musst die Zahl als `0.1` eingeben



Wo eingeben Robat? beim Spinner habe ich ja den Wert 0,1 ausgewählt.


----------



## brilzi89 (11. Dez 2018)

httpdigest hat gesagt.:


> Ach so, ja, dann so:
> 
> ```
> ergebnissFeld.setText(String.valueOf(zahl1+zahl2+zahl3+Float.valueOf(spinner.replace(',', '.'))));
> ```



vielen dank httpdigest  so funktioniert es sehr gut.
Muss mich jetzt mal damit auseinander setzen.


----------

