-1

もう一度私の愚かさが襲った。以前の問題を手伝ってくれたすべての人に感謝します。私は今、最後に編集したいことです。知らない人のために、私はJavaを使用してEclipseでAndroidアプリケーションをプログラミングしています。このアクティビティでは、計算ボタンをクリックするとクラッシュし、理由がわかりません。同様のアプリケーションでブラケットが欠落しているという同様の問題がありましたが、これについては何も理解できませんでした。綴りや単語の大文字小文字を調べても何も見えなかったと誓います。しかし、私を知っていると、それがおそらく間違っていることです。ありがとう!!!

ps。logcatにエラーがなかったので、どこから始めればよいのかよくわかりません。誰かが私にもっと何かを与えるかもしれない方向に私を向けることができれば、私は喜んで助けてくれるでしょう。

Piggy.Java

package net.finalexam;

import java.text.DecimalFormat;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class Piggy extends Activity {
    double quartersValue = .25;
    double dimesValue   = .10;
    double nicklesValue  = .05;
    double penniesValue = .01 ;
    double dollarsValue = 1;
    double quartersMoney;
    double dollarsMoney;
    double dimesMoney;
    double nicklesMoney;
    double penniesMoney;
    double totalMoney;
    double newTotalMoney;
    double oldTotalMoney=0;
    int numberOfQuarters;
    int numberOfDimes;
    int numberOfNickles;
    int numberOfPennies;
    int numberOfDollars;



        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView (R.layout.piggybank);
            final EditText quarters =(EditText)findViewById(R.id.txtQuarters);
            final EditText dimes = (EditText)findViewById(R.id.txtDimes);
            final EditText nickles =(EditText)findViewById(R.id.txtNickles);
            final EditText pennies = (EditText)findViewById(R.id.txtPennies);
            final EditText dollars = (EditText)findViewById(R.id.txtDollars);
            Button calculate =(Button)findViewById(R.id.btnCalculate);
            final TextView results = ((TextView)findViewById(R.id.txtResults));
            final RadioButton add =(RadioButton)findViewById(R.id.radAdd);
            final RadioButton subtract =(RadioButton)findViewById(R.id.radSubtract);

                calculate.setOnClickListener(new OnClickListener(){

                    public void onClick(View v) {
                    numberOfQuarters = Integer.parseInt(quarters.getText().toString());
                    numberOfDimes = Integer.parseInt(dimes.getText().toString());
                    numberOfNickles = Integer.parseInt(nickles.getText().toString());
                    numberOfPennies = Integer.parseInt(pennies.getText().toString());
                    numberOfDollars = Integer.parseInt(dollars.getText().toString());
                    quartersMoney = numberOfQuarters * quartersValue;
                    dimesMoney = numberOfDimes * dimesValue;
                    nicklesMoney = numberOfNickles * nicklesValue;
                    penniesMoney = numberOfPennies * penniesValue;
                    dollarsMoney = numberOfDollars;
                    totalMoney= quartersMoney + dimesMoney + nicklesMoney + penniesMoney+dollarsMoney;
                    DecimalFormat currency = new DecimalFormat("$###,###.##");

                    if (add.isChecked()){
                        if(totalMoney>0){
                            newTotalMoney =oldTotalMoney +totalMoney;
                            oldTotalMoney = newTotalMoney;
                            results.setText(currency.format("newTotalMoney"));
                        }else{
                            Toast.makeText(Piggy.this, "You need to do more chores!!",Toast.LENGTH_LONG).show();

                        }
                    }
                    if (subtract.isChecked()){
                        newTotalMoney =oldTotalMoney +totalMoney;
                    }
                        if(newTotalMoney>0){

                            oldTotalMoney = newTotalMoney;
                            results.setText(currency.format("newTotalMoney"));
                        }else{
                            Toast.makeText(Piggy.this, "Save more money kido!!",Toast.LENGTH_LONG).show();
                        }
                        ;
                    }
            });
        }

}

これがファイルと一緒に使用するPiggyXMLです。誰かが何かを見ることができれば私はあなたの助けをいただければ幸いです。また、これに名前を付けるための最良の方法を見つけることができませんでした。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/piggy" >

    <EditText
        android:id="@+id/txtQuarters"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="27dp"
        android:ems="10"
        android:hint="Number of quarters"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/txtDimes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtQuarters"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:hint="Number of dimes"
        android:inputType="number" />

    <EditText
        android:id="@+id/txtNickles"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtDimes"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:hint="Number of nickles"
        android:inputType="number" />

    <EditText
        android:id="@+id/txtPennies"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtNickles"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:hint="Number of pennies"
        android:inputType="number" />

    <TextView
        android:id="@+id/txtResults"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="38dp" />


    <EditText
        android:id="@+id/txtDollars"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtPennies"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:hint="Number of Dollars"
        android:inputType="number" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtDollars"
        android:layout_centerHorizontal="true" >

        <RadioButton
            android:id="@+id/radAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Add" />

        <RadioButton
            android:id="@+id/radSubtract"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Subtract" />
    </RadioGroup>

    <Button
        android:id="@+id/btnCalculate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/radioGroup1"
        android:layout_centerHorizontal="true"
        android:text="Calculate" />

</RelativeLayout>

編集。みんなありがとう。このサイトは私にとって本当に大きな助けであり、素晴らしいリソースです。そうは言っても、エラーログを見つけました。

06-21 18:06:25.619:E / AndroidRuntime(26042):java.lang.NumberFormatException:''を整数として解析できません

4

1 に答える 1

2

EditTextのいずれかを入力しないと、空の文字列が返され、空の文字列""から整数を解析しようとすると、数値形式の例外が発生します。

最初に確認する必要があります。

if(!"".equals(yourString){
   int i = Integer.parseInt(yourString);
}

編集

また、これを実行しようとします。

 currency.format("newTotalMoney")

あなたがこれをするつもりであるとき:

 currency.format(newTotalMoney)

編集2

時間を節約するには、次のようなメソッドを作成する必要があります。

private Integer getNumber(EditText editText){
     int num = 0;
     if(editText == null) {
       Log.e("YouApp", "Didnt find view");
       return num;
     }
     String input = editText.getText().toString();
     if(!"".equals(input)) {
        try{
           num = Integer.parseInt(input);
        } catch(NumberFormatException e){
          Log.("YouApp", "Invalid input: "+input, e);
        }
     }
     return num;
}

次に、アプリで次のように使用します。

 numberOfNickles = getNumber(nickles);
 numberOfPennies = getNumber(pennies);
 // etc
于 2012-06-21T22:12:01.443 に答える