Java 每个操作返回一个除法

Java 每个操作返回一个除法,java,android,sdk,calculator,Java,Android,Sdk,Calculator,因此,为了学习,我正在使用Android SDK编程这个无用的计算器 问题是,我做的每一个操作都会返回一个除法 我检查过了,但由于经验不足,我找不到问题 这是主Java文件的代码: package com.example.craxcalculator; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.*; enum operations{

因此,为了学习,我正在使用Android SDK编程这个无用的计算器 问题是,我做的每一个操作都会返回一个除法 我检查过了,但由于经验不足,我找不到问题 这是主Java文件的代码:

package com.example.craxcalculator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
enum operations{
NO, ADD, SUB, MUL, DIV
};
public class CraxCalculator extends Activity {

public float actualNumber = 0f;
public float finalResult=0.0f;
operations o = operations.NO;
public String onScreenNumber = new String();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_crax_calculator);
    Declarations();

}
@Override
protected void onStop(){
    super.onStop();
    o=operations.NO;
}

protected void Declarations(){
final Button b1 = (Button)findViewById(R.id.add1);
final Button b2 = (Button)findViewById(R.id.add2);
final Button b3 = (Button)findViewById(R.id.add3);
final Button b4 = (Button)findViewById(R.id.add4);
final Button b5 = (Button)findViewById(R.id.add5);
final Button b6 = (Button)findViewById(R.id.add6);
final Button b7 = (Button)findViewById(R.id.add7);
final Button b8 = (Button)findViewById(R.id.add8);
final Button b9 = (Button)findViewById(R.id.add9);
final Button b0 = (Button)findViewById(R.id.add0);
final Button res = (Button)findViewById(R.id.result);
final Button del = (Button)findViewById(R.id.del);
final Button mul = (Button)findViewById(R.id.mul);
final Button add = (Button)findViewById(R.id.add);
final Button sub = (Button)findViewById(R.id.sub);
final Button div = (Button)findViewById(R.id.div);
final TextView finalText = (TextView)findViewById(R.id.resultShow);

res.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        finalText.setText(onScreenNumber);
        switch (o){
        case NO:
            finalText.setText(onScreenNumber);
        case ADD:
            finalResult=actualNumber+Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
        case SUB:
            finalResult=actualNumber-Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
        case MUL:
            finalResult=actualNumber*Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
        case DIV:
            finalResult=actualNumber/Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
    }
    }
});

b1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        onScreenNumber = onScreenNumber+"1";
        finalText.setText(onScreenNumber);

    }
});
b2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber = onScreenNumber+"2";
        finalText.setText(onScreenNumber);
    }
});
b3.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="3";
        finalText.setText(onScreenNumber);
    }
});
b4.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="4";
        finalText.setText(onScreenNumber);
    }
});
b5.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="5";
        finalText.setText(onScreenNumber);
    }
});
b6.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="6";
        finalText.setText(onScreenNumber);

    }
});
b7.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="7";
        finalText.setText(onScreenNumber);
    }
});
b8.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onScreenNumber+="8";
        finalText.setText(onScreenNumber);
    }
});
b9.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        onScreenNumber+="9";
        finalText.setText(onScreenNumber);
    }
});
b0.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v){
        onScreenNumber+="0";
        finalText.setText(onScreenNumber);
    }
});
del.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v){
        onScreenNumber="";
        finalText.setText("0");
        actualNumber=0;
        finalResult=0;
    }
});
add.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v){
        o = operations.ADD;
        actualNumber= Float.parseFloat(onScreenNumber);
        onScreenNumber="";
        finalText.setText("0");
    }
});
sub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        o = operations.SUB;
        actualNumber=Float.parseFloat(onScreenNumber);
        onScreenNumber="";
        finalText.setText("0");
    }
});
mul.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        o = operations.MUL;
        actualNumber=Float.parseFloat(onScreenNumber);
        onScreenNumber="";
        finalText.setText("0");
    }
});
div.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        o = operations.DIV;
        actualNumber=Float.parseFloat(onScreenNumber);
        onScreenNumber="";
        finalText.setText("0");
    }
});
}
}
这是我的活动xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >

<Button
    android:id="@+id/add1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="171dp"
    android:text="1" />

<Button
    android:id="@+id/add2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/add1"
    android:layout_alignBottom="@+id/add1"
    android:layout_marginLeft="21dp"
    android:layout_toRightOf="@+id/add1"
    android:text="2" />

<Button
    android:id="@+id/add3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/add2"
    android:layout_alignBottom="@+id/add2"
    android:layout_marginLeft="20dp"
    android:layout_toRightOf="@+id/add2"
    android:text="3" />

<Button
    android:id="@+id/add6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add3"
    android:layout_below="@+id/add3"
    android:text="6" />

<Button
    android:id="@+id/add5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/add2"
    android:layout_toLeftOf="@+id/add3"
    android:text="5" />

<Button
    android:id="@+id/add4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/add1"
    android:layout_toLeftOf="@+id/add2"
    android:text="4" />

<Button
    android:id="@+id/add7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add4"
    android:layout_below="@+id/add4"
    android:text="7" />

<Button
    android:id="@+id/add8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/add7"
    android:layout_alignBottom="@+id/add7"
    android:layout_toLeftOf="@+id/add3"
    android:text="8" />

<Button
    android:id="@+id/add9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add6"
    android:layout_below="@+id/add6"
    android:text="9" />

<TextView
    android:id="@+id/resultShow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add1"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/add3"
    android:layout_marginTop="34dp"
    android:text="0"
    android:textSize="40dp" />

<Button
    android:id="@+id/result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/add0"
    android:layout_alignBottom="@+id/add0"
    android:layout_alignLeft="@+id/add9"
    android:text="=" />

<Button
    android:id="@+id/add0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add8"
    android:layout_below="@+id/add8"
    android:text="0" />

<Button
    android:id="@+id/add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/add6"
    android:layout_alignParentRight="true"
    android:layout_marginRight="14dp"
    android:text="+" />


<Button
    android:id="@+id/mul"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/result"
    android:layout_alignLeft="@+id/add"
    android:text="*" />

<Button
    android:id="@+id/sub"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/add"
    android:layout_below="@+id/add"
    android:text="-" />

<Button
    android:id="@+id/div"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/mul"
    android:layout_below="@+id/mul"
    android:text="/" />

<Button
    android:id="@+id/del"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/add7"
    android:layout_toLeftOf="@+id/add2"
    android:text="C" />


好吧,我到处碰头,但什么也没有,我被这个问题困住了。c.c

你的
onClick
方法中的
switch
语句没有
break
语句结束案例。如果没有
中断
s,则执行将在计划运行的案例下方的案例中继续进行。在本例中,最后一种情况是
DIV
,它覆盖所有情况下任何其他情况的结果

switch (o){
    case NO:
        finalText.setText(onScreenNumber);
        break;
    case ADD:
        finalResult=actualNumber+Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case SUB:
        finalResult=actualNumber-Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case MUL:
        finalResult=actualNumber*Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case DIV:
        finalResult=actualNumber/Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
}
在所有案例的末尾放置
break
s

switch (o){
    case NO:
        finalText.setText(onScreenNumber);
        break;
    case ADD:
        finalResult=actualNumber+Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case SUB:
        finalResult=actualNumber-Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case MUL:
        finalResult=actualNumber*Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case DIV:
        finalResult=actualNumber/Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
}

onClick
方法中的
switch
语句没有结束案例的
break
语句。如果没有
中断
s,则执行将在计划运行的案例下方的案例中继续进行。在本例中,最后一种情况是
DIV
,它覆盖所有情况下任何其他情况的结果

switch (o){
    case NO:
        finalText.setText(onScreenNumber);
        break;
    case ADD:
        finalResult=actualNumber+Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case SUB:
        finalResult=actualNumber-Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case MUL:
        finalResult=actualNumber*Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case DIV:
        finalResult=actualNumber/Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
}
在所有案例的末尾放置
break
s

switch (o){
    case NO:
        finalText.setText(onScreenNumber);
        break;
    case ADD:
        finalResult=actualNumber+Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case SUB:
        finalResult=actualNumber-Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case MUL:
        finalResult=actualNumber*Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
    case DIV:
        finalResult=actualNumber/Float.parseFloat(onScreenNumber);
        finalText.setText(String.valueOf(finalResult));
        break;
}

您缺少开关中的断路器:

        case NO:
            finalText.setText(onScreenNumber);
            break;
        case ADD:
            finalResult=actualNumber+Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case SUB:
            finalResult=actualNumber-Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case MUL:
            finalResult=actualNumber*Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case DIV:
            finalResult=actualNumber/Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;

您缺少开关中的断路器:

        case NO:
            finalText.setText(onScreenNumber);
            break;
        case ADD:
            finalResult=actualNumber+Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case SUB:
            finalResult=actualNumber-Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case MUL:
            finalResult=actualNumber*Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;
        case DIV:
            finalResult=actualNumber/Float.parseFloat(onScreenNumber);
            finalText.setText(String.valueOf(finalResult));
            break;

这样一个noob错误c.c谢谢c.c这样一个noob错误c.c谢谢c.cTry缩小代码范围以隔离问题。请参阅尝试缩小代码范围以隔离问题。看见