나는 안드로이드 용 간단한 계산기 응용 프로그램을 만들려고 노력 중이며 지금은 붙어 있습니다. 저는 2 개의 계산기를 만들 계획이었습니다 (하나는 기본이고 다른 하나는 Windows에서 만든 것과 비슷합니다). 아이디어는 3 개의 다른 종류에서 그것을 만들기위한 것이었다.java (classes)의 계산기 오류
두 개의 클래스는 "기본"코드 (버튼, 레이아웃)를 포함하고 마지막 클래스는 호출 할 계획 인 함수 (예 : 추가, 곱하기)를 포함해야합니다. 한 클래스에서 두 계산기를 모두 마칠 수 있었지만 다른 클래스의 함수를 호출하는 방법을 모르겠습니다.
문제 : 저는 기본 계산기를 만들 수 있었고 다른 클래스의 함수를 호출 할 수있었습니다.하지만 더 많은 계산을 하나씩 추가하려면 제대로 작동하지 않을 수 있습니다. 내 말은 : 첫 번째 숫자가 1이고 두 번째 숫자가 3이라고 가정 해 봅시다. 결과 4를 인쇄합니다. 다시 추가하고 2를 입력하면 6 대신 결과 5가 인쇄됩니다. 어떻게 든 두 번째 변수를 첫 번째와 나는 :( 이 사람이 나를 도울 수있는 이유를 알아낼 수 없습니다? 감사를 사전
enter code here
package com.example.simcalc;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainInterface extends Activity implements OnClickListener {
static EditText disp;
static TextView txt1, txt2;
SimFunctions sm;
TextView tx1;
Button btDot, bt1, bt2, bt3, bt4, bt5, bt6, bt7 ,bt8, bt9, bt0, btPlus, btMinus, btDivide, btMult,btEquals, btC;
float num2 =0 , res;
float num1 = 0;
String saveNumber = "";
static char sim ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_interface);
disp = (EditText) findViewById(R.id.enterNumber);
bt1 = (Button) findViewById(R.id.one);
bt2 = (Button) findViewById(R.id.two);
bt3 = (Button) findViewById(R.id.three);
bt4 = (Button) findViewById(R.id.four);
bt5 = (Button) findViewById(R.id.five);
bt6 = (Button) findViewById(R.id.six);
bt7 = (Button) findViewById(R.id.seven);
bt8 = (Button) findViewById(R.id.eight);
bt9 = (Button) findViewById(R.id.nine);
bt0 = (Button) findViewById(R.id.zero);
btPlus = (Button) findViewById(R.id.add);
btMinus = (Button) findViewById(R.id.sub);
btMult = (Button) findViewById(R.id.mult);
btDivide = (Button) findViewById(R.id.div);
btC = (Button) findViewById (R.id.can);
btDot = (Button) findViewById(R.id.decimal);
btEquals = (Button) findViewById(R.id.equal);
txt1 = (TextView) findViewById(R.id.textView1);
txt2 = (TextView) findViewById(R.id.textView2);
bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
bt3.setOnClickListener(this);
bt4.setOnClickListener(this);
bt5.setOnClickListener(this);
bt6.setOnClickListener(this);
bt7.setOnClickListener(this);
bt8.setOnClickListener(this);
bt9.setOnClickListener(this);
bt0.setOnClickListener(this);
btPlus.setOnClickListener(this);
btMinus.setOnClickListener(this);
btDivide.setOnClickListener(this);
btMult.setOnClickListener(this);
btC.setOnClickListener(this);
btDot.setOnClickListener(this);
btEquals.setOnClickListener(this);
disp.setText("0");
sm = new SimFunctions();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_interface, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.one:
saveNumber += "1";
disp.setText(saveNumber);
break;
case R.id.two:
saveNumber += "2";
disp.setText(saveNumber);
break;
case R.id.three:
saveNumber += "3";
disp.setText(saveNumber);
break;
case R.id.four:
saveNumber += "4";
disp.setText(saveNumber);
break;
case R.id.five:
saveNumber += "5";
disp.setText(saveNumber);
break;
case R.id.six:
saveNumber += "6";
disp.setText(saveNumber);
break;
case R.id.seven:
saveNumber += "7";
disp.setText(saveNumber);
break;
case R.id.eight:
saveNumber += "8";
disp.setText(saveNumber);
break;
case R.id.nine:
saveNumber += "9";
disp.setText(saveNumber);
break;
case R.id.zero:
saveNumber += "0";
disp.setText(saveNumber);
break;
case R.id.decimal:
if (saveNumber.contains(".")){
break;
}
else{
saveNumber += ".";
disp.setText(saveNumber);
break;
}
case R.id.mult:
sim = '*';
if (saveNumber != ""){
num1 = Float.parseFloat(saveNumber);
saveNumber = "";
break;}
else{
break;}
case R.id.add:
sim = '+';
if (saveNumber != ""){
num1 = Float.parseFloat(saveNumber);
saveNumber = "";
break;}
else{
break;}
case R.id.div:
sim = '/';
if (saveNumber != ""){
num1 = Float.parseFloat(saveNumber);
saveNumber = "";
break;}
else{
break;}
case R.id.sub:
sim = '-';
if (saveNumber != ""){
num1 = Float.parseFloat(saveNumber);
saveNumber = "";
break;}
else{
break;}
case R.id.equal:
sm.equals(num1, saveNumber, sim);
break;
case R.id.can:
saveNumber = "";
disp.setText(saveNumber);
break;
}
}
}
package com.example.simcalc;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SimFunctions extends MainInterface {
public void equals(float num1, String saveNumber, char simbol){
String ds = "";
if (saveNumber != "") {
try{
num2 = Float.parseFloat(saveNumber);}
catch(NumberFormatException e){
e.printStackTrace();
}
}
else {
num2 = 0;}
switch (simbol){
case ('*'):
res = num1 * num2;
num1 = res;
ds = Float.toString(res);
disp.setText(ds);
saveNumber = "";
ds = "";
break;
case ('+'):
ds = Float.toString(num1);
txt1.setText(ds);
ds = Float.toString(num2);
txt2.setText(ds);
res = num1 + num2;
num1 = res;
ds = Float.toString(res);
disp.setText(ds);
saveNumber = "";
ds = "";
break;
case ('/'):
res = num1/num2;
num1 = res;
ds = Float.toString(res);
disp.setText(ds);
saveNumber = "";`enter code here`
ds = "";
break;
enter code here
case ('-'):
res = num1 - num2;
num1 = res;
ds = Float.toString(res);
disp.setText(ds);
saveNumber = "";
ds = "";
break;
}
}
}
<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"
android:background="@color/testBlack"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainInterface" >
<EditText
android:id="@+id/enterNumber"
android:layout_width="match_parent"
android:layout_height="110dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@color/scoreColor"
android:inputType="numberDecimal" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/linearLayout2"
android:layout_alignParentBottom="true"
android:layout_marginBottom="86dp"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="20dp" >
<Button
android:id="@+id/seven"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="7" />
<Button
android:id="@+id/eight"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="8" />
<Button
android:id="@+id/nine"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="9" />
<Button
android:id="@+id/div"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="/" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout1"
android:layout_alignLeft="@+id/enterNumber"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="20dp" >
<Button
android:id="@+id/four"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="4" />
<Button
android:id="@+id/five"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="5" />
<Button
android:id="@+id/six"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="6" />
<Button
android:id="@+id/mult"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="*" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/linearLayout2"
android:layout_below="@+id/enterNumber"
android:layout_marginTop="20dp"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="20dp" >
<Button
android:id="@+id/one"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="1" />
<Button
android:id="@+id/two"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="2" />
<Button
android:id="@+id/three"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="3" />
<Button
android:id="@+id/sub"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="-" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/linearLayout1"
android:layout_alignParentBottom="true"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="20dp" >
<Button
android:id="@+id/can"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="c" />
<Button
android:id="@+id/zero"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="0" />
<Button
android:id="@+id/equal"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="=" />
<Button
android:id="@+id/add"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="+" />
<Button
android:id="@+id/decimal"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="." />
</LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout3"
android:layout_alignParentLeft="true"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout3"
android:layout_toRightOf="@+id/textView1"
android:text="TextView" />
</RelativeLayout>
타이 답장을 보내 주시면 나는 그와 같은 것이 문제 여야한다는 것을 이해했지만 완전히 이해할 수는 없습니다. 내 말은 내가 saveNumber 넣어 = ""num1 + num2 계산 한 이유는 여전히 3 값이있는 것처럼 saveNumber 여전히 취급합니까? 나는 바보 같아서 이걸 고치는 법을 알아 내지 못한다 ... – Proxy
어제 끝까지 해결할 수 있었다. 나는 동등 함수의 인수를 String saveNumber에서 sNumber로 바꿨다. 왜냐하면 나는 로컬 변수 saveNumber를 전역 변수가 아닌 하나를 참조하기 전에 이해했기 때문이다. 또한 전역 saveNumber를 정적 saveNumber로 변경해야했습니다. – Proxy