复利计划无法计算

时间:2012-10-19 21:00:38

标签: java android

我一直试图让这个程序工作,但由于某种原因它不会计算复合的兴趣。一点帮助将不胜感激。注意我没有完成if语句,无论输入到compoundInterestEditText字段的值是什么。我希望它能与我拥有的东西一起工作。 endValueEditText甚至不会更新。

Main.java:

 package com.example.compoundinterest;

import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.Spinner;
import android.app.Activity;


public class Main extends Activity {

    //contants used when saving and restoring state
        private static final String CAPITAL_TOTAL = "CAPITAL_TOTAL";
        private static final String INTEREST_RATE = "INTEREST_RATE";
        private static final String YEARS_GROW = "YEARS_GROW";
        private static final String ANNUAL_ADDITION = "ANNUAL_ADDITION";
        private static final String COMPOUND_RATE = "COMPOUND_RATE";
        private static final String END_VALUE = "END_VALUE";

    //double values for calculations
    private double currentCapital;
    private double currentInterestRate;
    private double currentYearsToGrow;
    private double currentAnnualAddition;
    private double currentCompoundInterest;
    private double currentEndValue;

        //declare variables to be used
        private EditText capitalEditText;
        private EditText interestRateEditText;
        private EditText yearsToGrowEditText;
        private EditText annualAdditionEditText;
        private EditText compoundInterestEditText;
        private EditText endValueEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

      //check if app has been started or being restored from memory
        if(savedInstanceState == null) {
            currentCapital = 0.0;//initialize the capital amount to zero
            currentInterestRate = 0;//initialize the interest rate to zero
            currentYearsToGrow = 0;//initialize the years to grow to zero
            currentAnnualAddition = 0;//initialize the annual addition to zero
            currentCompoundInterest = 0;//initialize the interest rate to zero
            currentEndValue = 0;//initialize the end value to zero
        }//end if

        else//app is being restored from memory, not executed from scratch
        {
            //initialize the capital amount to saved amount
            currentCapital = savedInstanceState.getDouble(CAPITAL_TOTAL);

            //initialize interest rate to saved amount
            currentInterestRate = savedInstanceState.getInt(INTEREST_RATE);

            //initialize years to grow amount to saved amount
            currentYearsToGrow = savedInstanceState.getInt(YEARS_GROW);

            //initialize annual addition amount to saved amount
            currentAnnualAddition = savedInstanceState.getInt(ANNUAL_ADDITION);

            //initialize compound interest rate amount to saved amount
            currentCompoundInterest = savedInstanceState.getInt(COMPOUND_RATE);

            //initialize end value amount to saved amount
            currentEndValue = savedInstanceState.getInt(END_VALUE);

        }//end else




        //get references to EditText fields
        capitalEditText = (EditText) findViewById(R.id.capitalEditText);
        interestRateEditText = (EditText) findViewById(R.id.interestRateEditText);
        yearsToGrowEditText = (EditText) findViewById(R.id.yearsToGrowEditText);
        annualAdditionEditText = (EditText) findViewById(R.id.annualAdditionEditText);
        compoundInterestEditText = (EditText) findViewById(R.id.compoundInterestEditText);
        endValueEditText = (EditText) findViewById(R.id.endValueEditText);

        endValueEditText.addTextChangedListener(endValueEditTextWatcher);




    }//end of method onCreate


    //function for updating the values as the numbers entered by user are changed
    private void updateValue() {

        if(currentCompoundInterest == 1) {


            double finalCalculation = currentCapital * (1 + currentInterestRate);
            endValueEditText.setText(String.format("%.02f", finalCalculation));
        }

        else if(currentCompoundInterest ==2) {

        }

        else if(currentCompoundInterest==3) {

        }

        else if(currentCompoundInterest==4) {

        }



    }//end of updateValue() function


    //main function to aid in updating the user input
    private TextWatcher endValueEditTextWatcher = new TextWatcher() {

        public void onTextChanged(CharSequence s, int start, int before, int count) {

            //convert billEditText's text to a double
            try {
                currentCapital = Double.parseDouble(s.toString());
                currentInterestRate = Double.parseDouble(s.toString());
                currentYearsToGrow = Double.parseDouble(s.toString());
                currentAnnualAddition = Double.parseDouble(s.toString());
                currentCompoundInterest = Double.parseDouble(s.toString());
                currentEndValue = Double.parseDouble(s.toString());
            }//end try
            catch (NumberFormatException e)
            {
                currentCapital = 0.0;//default if an exception occurs
                currentInterestRate = 0.0;//default if an exception occurs
                currentYearsToGrow = 0.0;//default if an exception occurs
                currentAnnualAddition = 0.0;//default if an exception occurs
                currentCompoundInterest = 0.0;//default if an exception occurs
                currentEndValue = 0.0;//default if an exception occurs
            }//end catch

            //run updateValue Function
            updateValue();

        }//end of onTextChanged inner onTextChanged





        public void afterTextChanged(Editable s)
        {
        }//end method afterTextChanged

        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
        }//end method beforeTextChanged

    };//end of endValueEditTextWatcher

}//end of Compound Interest function

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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






        <TextView
            android:id="@+id/instructionsTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingTop="5dp"
            android:text="Enter Value to be borrowed or invested:"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="14sp" />

    </TableRow>

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




        <TextView
            android:id="@+id/capitalTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Capital" />



        <EditText
            android:id="@+id/capitalEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" >

            <requestFocus />
        </EditText>

    </TableRow>

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




        <TextView
            android:id="@+id/interestRateTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Interest Rate (%)" />




        <EditText
            android:id="@+id/interestRateEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />

    </TableRow>

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





        <TextView
            android:id="@+id/yearsToGrowTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Years To Grow" />



        <EditText
            android:id="@+id/yearsToGrowEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="numberDecimal" />

    </TableRow>

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




        <TextView
            android:id="@+id/annualAdditionTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Annual Addition" />



        <EditText
            android:id="@+id/annualAdditionEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10" 
            android:inputType="numberDecimal"/>

    </TableRow>

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




        <TextView
            android:id="@+id/compoundInterestTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Compound Interest" />



        <EditText
            android:id="@+id/compoundInterestEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10" />

    </TableRow>



    <TableRow
        android:id="@+id/tableRow6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="50dp" >



<TextView
    android:id="@+id/endValueTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:paddingTop="20dp"
    android:text="End Value" />






        <EditText
            android:id="@+id/endValueEditText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:clickable="false"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:inputType="numberDecimal" />

    </TableRow>

</TableLayout>

logcat的:

10-19 15:30:59.251: E/CircleShortcutWidget(641): density = 320
10-19 15:30:59.251: E/CircleShortcutWidget(641): pkg name =com.android.contacts, activityName=com.android.contacts.activities.DialtactsActivity
10-19 15:30:59.251: D/CircleShortcutWidget(641): mIconWidth =0
10-19 15:30:59.251: D/PhoneStatusBar(777): disable: < expand icons alerts ticker system_info BACK* HOME RECENT CLOCK* >
10-19 15:30:59.261: D/CircleShortcutWidget(641): BitmapDrawable
10-19 15:30:59.261: E/CircleShortcutWidget(641): pkg name =com.android.mms, activityName=com.android.mms.ui.ConversationComposer
10-19 15:30:59.261: D/CircleShortcutWidget(641): mIconWidth =0
10-19 15:30:59.261: D/CircleShortcutWidget(641): BitmapDrawable
10-19 15:30:59.261: E/CircleShortcutWidget(641): pkg name =com.sec.android.widgetapp.diotek.smemo, activityName=com.sec.android.widgetapp.q1_penmemo.MemoListActivity
10-19 15:30:59.261: D/CircleShortcutWidget(641): mIconWidth =0
10-19 15:30:59.261: D/CircleShortcutWidget(641): BitmapDrawable
10-19 15:30:59.261: E/CircleShortcutWidget(641): pkg name =com.sec.android.app.camera, activityName=com.sec.android.app.camera.Camera
10-19 15:30:59.261: D/CircleShortcutWidget(641): mIconWidth =0
10-19 15:30:59.261: D/CircleShortcutWidget(641): BitmapDrawable
10-19 15:30:59.261: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.271: D/CircleLockScreen(641): onRefreshBatteryInfo() showPatteryInfo: true pluggedIn: true batteryLevel: 76
10-19 15:30:59.271: D/ClockWidget(641): refreshTime()
10-19 15:30:59.281: D/ClockWidget(641): TTS Message = It is 3 : 30 PM, Friday, October 19
10-19 15:30:59.281: W/LockPatternKeyguardView(641): Couldn't find transport control widget
10-19 15:30:59.281: D/ClockWidget(641): refreshTime()
10-19 15:30:59.291: D/ClockWidget(641): TTS Message = It is 3 : 30 PM, Friday, October 19
10-19 15:30:59.291: D/ClockWidget(641): isServiceEnable = false cityId = cityId:347628
10-19 15:30:59.291: D/ClockWidget(641): Weather Demon is not running, Set visibility to GONE
10-19 15:30:59.301: E/LockPatternKeyguardView(641): mResetWakeLock.release()
10-19 15:30:59.311: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.321: D/KeyguardUpdateMonitor(641): handleClockVisibilityChanged()
10-19 15:30:59.321: D/KeyguardViewMediator(641): adjustStatusBarLocked: mShowing=true mHidden=false isSecure=false --> flags=0x1200000
10-19 15:30:59.331: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.331: D/KeyguardUpdateMonitor(641): handleClockVisibilityChanged()
10-19 15:30:59.331: D/KeyguardViewMediator(641): adjustStatusBarLocked: mShowing=true mHidden=false isSecure=false --> flags=0x1200000
10-19 15:30:59.331: D/STATUSBAR-StatusBarManagerService(641): manageDisableList what=0x1200000 pkg=android
10-19 15:30:59.331: D/STATUSBAR-StatusBarManagerService(641): manageDisableList what=0x1200000 pkg=android
10-19 15:30:59.351: D/memalloc(331): ion: Allocated buffer base:0x439ad000 size:3674112 fd:11
10-19 15:30:59.351: D/memalloc(641): ion: Mapped buffer base:0x65c51000 size:3674112 offset:0 fd:386
10-19 15:30:59.371: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.371: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.371: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.381: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:30:59.381: D/memalloc(331): ion: Freeing buffer base:0x449ea000 size:1884160 fd:35
10-19 15:30:59.381: D/memalloc(331): ion: Freeing buffer base:0x446ca000 size:3276800 fd:37
10-19 15:30:59.381: I/Adreno200-EGLSUB(777): <ConfigWindowMatch:2078>: Format RGBA_8888.
10-19 15:30:59.391: D/memalloc(331): ion: Allocated buffer base:0x446ca000 size:3485696 fd:35
10-19 15:30:59.401: D/memalloc(331): ion: Allocated buffer base:0x44abd000 size:3768320 fd:37
10-19 15:30:59.401: D/memalloc(777): ion: Mapped buffer base:0x6022d000 size:3485696 offset:0 fd:103
10-19 15:30:59.411: D/memalloc(10083): ion: Mapped buffer base:0x5ce44000 size:3768320 offset:0 fd:52
10-19 15:30:59.441: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.441: I/Adreno200-EGLSUB(331): <GetImageAttributes:1158>: RGBX_8888
10-19 15:30:59.441: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.491: D/dalvikvm(777): GC_FOR_ALLOC freed 2139K, 20% free 21315K/26595K, paused 68ms
10-19 15:30:59.562: D/memalloc(331): ion: Allocated buffer base:0x4563a000 size:3485696 fd:48
10-19 15:30:59.562: D/memalloc(777): ion: Mapped buffer base:0x60580000 size:3485696 offset:0 fd:106
10-19 15:30:59.562: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.562: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:30:59.562: D/memalloc(331): ion: Freeing buffer base:0x427ad000 size:3276800 fd:45
10-19 15:30:59.562: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.562: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.562: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.572: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.572: D/memalloc(331): ion: Allocated buffer base:0x421c7000 size:94208 fd:45
10-19 15:30:59.572: D/memalloc(331): ion: Freeing buffer base:0x42312000 size:163840 fd:36
10-19 15:30:59.572: D/memalloc(777): ion: Mapped buffer base:0x5dd63000 size:94208 offset:0 fd:100
10-19 15:30:59.572: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.582: W/SurfaceFlinger(331): id=19405(2764) createSurface (1440x1280),-1 flag=20000
10-19 15:30:59.582: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.582: I/Adreno200-EGLSUB(331): <GetImageAttributes:1088>: RGB_565
10-19 15:30:59.602: W/SurfaceFlinger(331): id=19406(2765) createSurface (720x2560),-1 flag=20000
10-19 15:30:59.612: D/memalloc(331): ion: Allocated buffer base:0x427ad000 size:3674112 fd:36
10-19 15:30:59.612: D/memalloc(641): ion: Mapped buffer base:0x65fd2000 size:3674112 offset:0 fd:395
10-19 15:30:59.612: W/SurfaceFlinger(331): id=19407(2766) createSurface (1440x1280),-1 flag=20000
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19408(2767) createSurface (720x2560),-1 flag=20000
10-19 15:30:59.632: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.632: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:30:59.632: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19403 Removed idx=11 Map Size=5
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19405 Removed idx=7 Map Size=5
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19403 Removed idx=-2 Map Size=5
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19406 Removed idx=7 Map Size=5
10-19 15:30:59.632: W/SurfaceFlinger(331): id=19405 Removed idx=-2 Map Size=5
10-19 15:30:59.642: W/SurfaceFlinger(331): id=19407 Removed idx=7 Map Size=5
10-19 15:30:59.642: W/SurfaceFlinger(331): id=19406 Removed idx=-2 Map Size=5
10-19 15:30:59.642: W/SurfaceFlinger(331): id=19408 Removed idx=7 Map Size=5
10-19 15:30:59.642: W/SurfaceFlinger(331): id=19407 Removed idx=-2 Map Size=5
10-19 15:30:59.642: W/SurfaceFlinger(331): id=19408 Removed idx=-2 Map Size=5
10-19 15:30:59.652: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.652: D/memalloc(331): ion: Allocated buffer base:0x4598d000 size:3768320 fd:55
10-19 15:30:59.652: D/memalloc(10083): ion: Mapped buffer base:0x5d2dc000 size:3768320 offset:0 fd:59
10-19 15:30:59.662: D/KeyguardViewMediator(641): setHidden false
10-19 15:30:59.672: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.672: I/Adreno200-EGLSUB(331): <GetImageAttributes:1158>: RGBX_8888
10-19 15:30:59.722: D/memalloc(331): ion: Allocated buffer base:0x44e55000 size:3485696 fd:64
10-19 15:30:59.722: D/memalloc(777): ion: Mapped buffer base:0x60a9d000 size:3485696 offset:0 fd:109
10-19 15:30:59.722: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:30:59.722: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:30:59.992: D/KeyguardUpdateMonitor(641): received broadcast android.intent.action.TIME_TICK
10-19 15:30:59.992: D/KeyguardUpdateMonitor(641): handleTimeUpdate
10-19 15:30:59.992: W/AlarmManager(641): FACTORY_ON= 0
10-19 15:31:00.002: D/STATUSBAR-Clock(777): onReceive() - ACTION_TIME_TICK
10-19 15:31:00.002: D/STATUSBAR-Clock(777): updateClock :3:31 PM
10-19 15:31:00.002: D/STATUSBAR-DateView(777): updateClock :10/19/2012
10-19 15:31:00.052: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:31:00.052: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:31:00.062: D/ClockWidget(641): refreshTime()
10-19 15:31:00.072: D/ClockWidget(641): TTS Message = It is 3 : 31 PM, Friday, October 19
10-19 15:31:00.092: D/memalloc(331): ion: Allocated buffer base:0x45d25000 size:3674112 fd:71
10-19 15:31:00.092: D/memalloc(641): ion: Mapped buffer base:0x66353000 size:3674112 offset:0 fd:400
10-19 15:31:00.102: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:31:00.112: I/Adreno200-EGLSUB(331): <GetImageAttributes:1102>: RGBA_8888
10-19 15:31:00.142: E/SMD(327): DCD ON
10-19 15:31:00.152: D/memalloc(331): ion: Allocated buffer base:0x4614b000 size:3768320 fd:74
10-19 15:31:00.152: D/memalloc(10083): ion: Mapped buffer base:0x5d674000 size:3768320 offset:0 fd:62
10-19 15:31:00.162: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:31:00.162: I/Adreno200-EGLSUB(331): <GetImageAttributes:1158>: RGBX_8888
10-19 15:31:00.763: D/BatteryService(641): update start
10-19 15:31:00.763: D/KeyguardUpdateMonitor(641): received broadcast android.intent.action.BATTERY_CHANGED
10-19 15:31:00.763: D/BatteryService(641): level:76 scale:100 status:2 health:2 present:true voltage: 4138 temperature: 289 technology: Li-ion AC powered:false USB powered:true icon:17303135 invalid charger:0
10-19 15:31:00.763: D/ThermistorObserver(641): mBatteryBRForAMOLED : onReceive() : newTemperature : 289
10-19 15:31:00.773: E/MTPJNIInterface(6119): In MTPJNIINterface onReceive:android.intent.action.BATTERY_CHANGED
10-19 15:31:00.773: D/KeyguardUpdateMonitor(641): handleBatteryUpdate
10-19 15:31:00.773: D/memalloc(331): ion: Allocated buffer base:0x42269000 size:94208 fd:77
10-19 15:31:00.773: D/memalloc(331): ion: Freeing buffer base:0x4233a000 size:163840 fd:61
10-19 15:31:00.773: D/memalloc(777): ion: Mapped buffer base:0x5dd95000 size:94208 offset:0 fd:52
10-19 15:31:00.773: I/Adreno200-EGLSUB(331): <CreateImage:893>: Android Image
10-19 15:31:00.773: I/Adreno200-EGLSUB(331): <GetImageAttributes:1088>: RGB_565
10-19 15:31:00.773: D/STATUSBAR-BatteryController(777): onReceive() - ACTION_BATTERY_CHANGED
10-19 15:31:00.773: D/STATUSBAR-BatteryController(777): onReceive() - level:76
10-19 15:31:00.773: D/STATUSBAR-BatteryController(777): onReceive() - plugged:2
10-19 15:31:00.773: D/STATUSBAR-BatteryController(777): onReceive() - BATTERY_STATUS_CHARGING:
10-19 15:31:01.113: E/MP-Decision(1348): DOWN Ld:59 Ns:1.100000 Ts:190 rq:0.000000 seq:196.000000
: E/(): Device disconnected

1 个答案:

答案 0 :(得分:1)

我猜你收到了一个堆栈溢出异常,因为setText()调用onTextChanged()调用updateValues()调用setText()来调用...(一遍又一遍) )。只需在TextWatcher中添加一个布尔值:

private TextWatcher endValueEditTextWatcher = new TextWatcher() {
    boolean update = false;
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        update = !update;
        if(!update)
            return;

        ...
    }
}

但我认为你创建了一个奇怪的用户界面:只有当用户在endValueEditText中键入一个值时才会运行updateValues()。我认为您应该创建一个标记为“Calculate interest”的按钮,然后在此Button的OnClickListener中读取EditText值。您还应该将endValueEditText更改为TextView,因为用户调用确实会更改此值。