java - 删除计算器应用程序中最后一位数字的最佳方法是什么

标签 java android

package com.gamesup.braingame;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Easy extends Activity {

EditText display;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.easy);
    display = (EditText)findViewById(R.id.displayText);
    display.setText("?");

}

static boolean isEmpty = true;

public void num_Clicked(View v){
    Button btn = (Button) findViewById(v.getId());
    //getting the button object and using a view to get the id of the buttons

    if(isEmpty){
        display.setText(btn.getText());
        isEmpty = false;
    }
    else{
        display.append(btn.getText().toString()); 
    }

    if (v.getId()== R.id.del_button){
        String s = display.getText().toString();
        s = s.substring(0, s.length() - 1);
        display.setText(s);

    }


}



}

这是我在计算器 Android 应用程序上显示数字的代码。 我必须使用什么来删除显示的最后一个数字?我还会在 num_Clicked 函数中执行此操作,如下所示:

if (v.getId()== R.id.del_button) {

}

这是我的 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >
 <TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" >

<TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

 <Button
            android:id="@+id/number1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_1_label" />

<Button
            android:id="@+id/number2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_2_label" />

 <Button
            android:id="@+id/number3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_3_label" />

</TableRow>

<TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

<Button
            android:id="@+id/number4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_4_label" />

<Button
            android:id="@+id/number5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_5_label" />

<Button
            android:id="@+id/number6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_6_label" />

</TableRow>

<TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >


<Button
            android:id="@+id/number7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_7_label" />


<Button
            android:id="@+id/number8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_8_label" />


 <Button
            android:id="@+id/number9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_9_label" />


</TableRow>


 <TableRow
        android:id="@+id/tableRow4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

<Button
            android:id="@+id/del_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/delete_label" />

<Button
            android:id="@+id/number0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/number_0_label" />


<Button
            android:id="@+id/hash_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/hash_label" />

<Button
            android:id="@+id/minus_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="num_Clicked"
            android:text="@string/minus_label" />

</TableRow>


</TableLayout>

<EditText
    android:id="@+id/displayText"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_above="@+id/tableLayout1"
    android:layout_alignLeft="@+id/tableLayout1"
    android:layout_alignRight="@+id/tableLayout1"
    android:ems="10"
    android:inputType="number" />

</RelativeLayout>

最佳答案

您可以使用 substring 方法删除字符串中的最后一个字符。

在捕获删除按下的方法中:

String s = display.getText().toString();
s = s.substring(0, s.length() - 1);
display.setText(s);

这将替换字符串 s 并删除最后一个字符

执行此操作的完整代码是:

包 com.gamesup.braingame;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Easy extends Activity {

    EditText display;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.easy);
        display = (EditText)findViewById(R.id.displayText);
        display.setText("?");

    }

    static boolean isEmpty = true;

    public void num_Clicked(View v){
        Button btn = (Button) v;

        if (v.getId()== R.id.del_button){
            String s = display.getText().toString();
            s = s.substring(0, s.length() - 1);
            display.setText(s);
            return;
        }

        if(isEmpty){
            display.setText(btn.getText());
            isEmpty = false;
        }
        else{
            display.append(btn.getText().toString()); 
        }
    }
}

关于java - 删除计算器应用程序中最后一位数字的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893558/

相关文章:

java - 创建按钮边缘的 "map"

java - WGET 和 HttpClient 可以工作,但 Jsoup 在 java 中不起作用

java - 从 Web 服务检索数据时出现问题

android - 如何使 Edittext 不可点击

java - 检测流是否用 Java 压缩的最佳方法

java - OSGi UI 应用程序中的最佳实践

java - 二维数组向上或向下移动方阵的列

java - 如何阻止应用程序/服务被破坏?

java - 使用 fragment 事务的 NullPointerException

android - 需要在 android 中使用丹麦语编辑文本的编辑命令