저는 계산기를 제 응용 프로그램에 넣었습니다. 그러나 무엇을해도 첫 번째 숫자는 항상 0이됩니다. 그래서 1을 클릭하면 01을 나타내지 만, 대신 결과를 나타내지 않습니다 결과는 .0으로 끝납니다.이 두 가지 문제는 제가 초급자이기 때문에이 계산기가 가능한 한 기본적이고 간단해야합니다.계산기는 항상 0을 표시합니다.
.0은 '이중'문제이지만 두 가지 문제 중 하나를 제거하는 방법을 연습 할 수는 없습니다. 아무도 나를 위해 이것에 대해 밝힐 수 있습니까? 여기 내 코드가있다. 에 관한
public class CalcActivity extends Activity implements OnClickListener, OnInitListener {
private EditText Scr;
private float NumberBf;
private String Operation;
private ButtonClickListener btnClick;
private TextToSpeech myTTS;
private int MY_DATA_CHECK_CODE = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calc);
Scr = (EditText) findViewById(R.id.editText);
Scr.setEnabled(false);
btnClick = new ButtonClickListener();
Button speakButton = (Button)findViewById(R.id.speak);
speakButton.setOnClickListener(this);
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
myTTS= new TextToSpeech(this,this);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
int idList[] =
{R.id.button0,R.id.button1,R.id.button2,R.id.button3,
R.id.button4,
R.id.button5,R.id.button6,R.id.button7,
R.id.button8,R.id.button9,R.id.buttonDot,
R.id.buttonAdd,R.id.buttonSub,R.id.buttonMul,
R.id. buttonDiv,R.id.buttonEq,R.id.buttonC
};
for(int id:idList){
View v =(View) findViewById(id);
v.setOnClickListener(btnClick);
}
}
public void mMath(String str){
NumberBf = Float.parseFloat(Scr.getText().toString());
Operation = str;
Scr.setText("0");
}
public void getKeyboard(String str){
String ScrCurrent = Scr.getText().toString();
ScrCurrent += str;
Scr.setText(ScrCurrent);
}
public void mResult() {
float NumAf = Float.parseFloat(Scr.getText().toString());
float result = 0;
if(Operation.equals("+")){
result = NumAf + NumberBf;
}
if(Operation.equals("-")){
result = NumberBf - NumAf;
}
if(Operation.equals("*")){
result = NumAf * NumberBf;
}
if(Operation.equals("/")){
result = NumberBf/NumAf;
}
Scr.setText(String.valueOf(result));
}
public void onClick(View v) {
//get the text entered
EditText enteredText = (EditText)findViewById(R.id.editText);
String words = enteredText.getText().toString();
speakWords(words);
}
private void speakWords(String speech) {
//speak straight away
myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
myTTS = new TextToSpeech(this, this);
}
else {Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
}
}
}
public void onInit(int initStatus) {
//check for successful instantiation
if (initStatus == TextToSpeech.SUCCESS) {
if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE)
myTTS.setLanguage(Locale.US);
}
else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry! Text To Speech failed...",
Toast.LENGTH_LONG).show();
}
}
private class ButtonClickListener implements View.OnClickListener{
public void onClick(View v) {
switch (v.getId()){
case R.id.buttonC:
Scr.setText("0");
NumberBf = 0;
Operation = "";
break;
case R.id.buttonAdd:
mMath("+");
break;
case R.id.buttonSub:
mMath("-");
break;
case R.id.buttonMul:
mMath("*");
break;
case R.id.buttonDiv:
mMath("/");
break;
case R.id.buttonEq:
mResult();
break;
default:
String numb = ((Button) v).getText().toString();
getKeyboard(numb);
break;
}
}
}
}
질문을 할 때 정말 더 구체적으로해야한다. 여기에 아무도 긴 코드를보고 솔직히 명확하지 않은 문제를 찾을 시간이 없습니다. "1"을 (를) 어디에 클릭합니까? 키보드 또는 번호가있는 버튼이 있습니까? 이 텍스트는 어디에 표시됩니까? 이 텍스트를 보여주는이 EditText의 이름은 무엇입니까? –
예 1은 키보드가 아닌 버튼입니다. 사과하지 않았습니까? 내가 모호하다는 것을 알았지 만 표시하는 텍스트가 하나 밖에 없습니다. – martinseal1987