【问题标题】:Integers and Calculations整数和计算
【发布时间】:2010-09-23 02:13:46
【问题描述】:

我正在处理整数并尝试进行涉及小数部分的计算。我之前使用过相同的设置并且它已经工作但由于某种原因这不起作用。

package table.periodic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;

public class Gram2mol extends Activity implements AdapterView.OnItemSelectedListener {

private Spinner Spinner01;
private TextView elementnumber;
private EditText grams;
private Button calculate;
private TextView moles5;

String[] element={"Actinium", "Aluminum", "Americium", 
        "Antimony", "Argon", "Arsenic", "Astatine", "Barium", 
        "Berkelium", "Beryllium", "Bismuth", "Bohrium", "Boron", 
        "Bromine", "Cadmium", "Calcium", "Californium", "Carbon", 
        "Cerium", "Cesium", "Chlorine", "Chromium", "Cobalt", 
        "Copernicium", "Copper", "Curium", "Darmstadtium", "Dubnium", 
        "Dysprosium", "Einsteinium", "Erbium", "Europium", "Fermium", 
        "Fluorine", "Francium", "Gadolinium", "Gallium", "Germanium", 
        "Gold", "Hafnium", "Hassium", "Helium", "Holmium", 
        "Hydrogen", "Indium", "Iodine", "Iridium", "Iron", 
        "Krypton", "Lanthanum", "Lawrencium", "Lead", "Lithium", 
        "Lutetium", "Magnesium", "Manganese", "Meitnerium", "Mendelevium", 
        "Mercury", "Molybdenum", "Neodymium", "Neon", "Neptunium", 
        "Nickel", "Niobium", "Nitrogen", "Nobelium", "Osmium", 
        "Oxygen", "Palladium", "Phosphorus", "Platinum", "Plutonium", 
        "Polonium", "Potassium", "Praseodymium", "Promethium", "Protactinium", 
        "Radium", "Radon", "Rhenium", "Rhodium", "Roentgenium", "Rubidium", 
        "Ruthenium", "Rutherfordium", "Samarium", "Scandium", "Seaborgium", 
        "Selenium", "Silicon", "Silver", "Sodium", "Strontium", "Sulfur", 
        "Tantalum", "Technetium", "Tellurium", "Terbium", "Thallium", "Thorium", 
        "Thulium", "Tin", "Titanium", "Tungsten", "Ununpentium", "Ununquadium",
        "Ununtrium", "Uranium", "Vanadium", "Xenon", "Ytterbium", "Yttrium", "Zinc",
        "Zirconium"};

public void onCreate(Bundle icicle){
    super.onCreate(icicle);
    setContentView(R.layout.grams2moles);

    elementnumber = (TextView) findViewById(R.id.elementnumber);

    grams = (EditText) findViewById(R.id.grams);

    calculate = (Button) findViewById(R.id.calculate);
    calculate.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {my_func01();}});

    Spinner spin = (Spinner) findViewById(R.id.elements);
    spin.setOnItemSelectedListener((OnItemSelectedListener) this);

    ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, element);

    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spin.setAdapter(aa);
}

void my_func01(){
    int grams2;
    int elementnumber2;
    int moles2;

        grams2 = Integer.parseInt(grams.getText().toString());
        elementnumber2 = Integer.parseInt(elementnumber.getText().toString());

        moles2 = (grams2 * (1 / elementnumber2));

        moles5.setText("" + moles2);
    }

    public void setSpinner01(Spinner spinner01) {
        Spinner01 = spinner01;
    }

    public Spinner getSpinner01() {
        return Spinner01;
    }

    public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
    {

    if ("Actinium".equals(element[position]))
    {elementnumber.setText("227");}

    if ("Aluminum".equals(element[position]))
    {elementnumber.setText("26.981538");}

    if ("Americium".equals(element[position]))
    {elementnumber.setText("243");}

    if ("Antimony".equals(element[position]))
    {elementnumber.setText("121.760");}

    if ("Argon".equals(element[position]))
    {elementnumber.setText("39.948");}

    if ("Arsenic".equals(element[position]))
    {elementnumber.setText("74.9216");}

    if ("Astatine".equals(element[position]))
    {elementnumber.setText("210");}

    if ("Barium".equals(element[position]))
    {elementnumber.setText("137.327");}

    if ("Berkelium".equals(element[position]))
    {elementnumber.setText("247");}

    if ("Bismuth".equals(element[position]))
    {elementnumber.setText("208.9804");}

    if ("Bohrium".equals(element[position]))
    {elementnumber.setText("264");}

    if ("Boron".equals(element[position]))
    {elementnumber.setText("10.811");}

    if ("Bromine".equals(element[position]))
    {elementnumber.setText("79.904");}

    if ("Cadmium".equals(element[position]))
    {elementnumber.setText("112.41");}

    if ("Calcium".equals(element[position]))
    {elementnumber.setText("40.078");}

    if ("Californium".equals(element[position]))
    {elementnumber.setText("251");}

    if ("Carbon".equals(element[position]))
    {elementnumber.setText("12.0107");}

    if ("Cerium".equals(element[position]))
    {elementnumber.setText("140.116");}

    if ("Cesium".equals(element[position]))
    {elementnumber.setText("132.90545");}

    if ("Chlorine".equals(element[position]))
    {elementnumber.setText("35.453");}

    if ("Chromium".equals(element[position]))
    {elementnumber.setText("51.996");}

    if ("Copper".equals(element[position]))
    {elementnumber.setText("63.546");}

    if ("Curium".equals(element[position]))
    {elementnumber.setText("247");}

    }

    public void onNothingSelected(AdapterView<?> arg0) {
        elementnumber.setText("227");
    }

}

我的错误是这样的

09-22 20:02:58.353: ERROR/AndroidRuntime(17745): Uncaught handler: thread main exiting due to uncaught exception
09-22 20:02:58.513: ERROR/AndroidRuntime(17745): java.lang.NullPointerException
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at table.periodic.Gram2mol.my_func01(Gram2mol.java:77)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at table.periodic.Gram2mol$1.onClick(Gram2mol.java:56)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.View.performClick(View.java:2364)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.View.onTouchEvent(View.java:4179)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.widget.TextView.onTouchEvent(TextView.java:6592)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.View.dispatchTouchEvent(View.java:3709)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1695)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.app.Activity.dispatchTouchEvent(Activity.java:2068)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1679)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1697)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.os.Looper.loop(Looper.java:123)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at android.app.ActivityThread.main(ActivityThread.java:4568)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at java.lang.reflect.Method.invokeNative(Native Method)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at java.lang.reflect.Method.invoke(Method.java:521)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-22 20:02:58.513: ERROR/AndroidRuntime(17745):     at dalvik.system.NativeStart.main(Native Method)

第 77 行是 "moles5.setText("" + moles2);"

我不相信我弄混了任何 id,所以我并不担心,它似乎也不是那种错误。如果有人有任何想法,请告诉我。谢谢。

【问题讨论】:

    标签: android integer


    【解决方案1】:

    您似乎没有实例化moles5 变量。如果您的 layout/grams2moles.xml 文件中有一个 ID 为 moles5 的 TextView,您可以通过调用在 onCreate() 中实例化它

    moles5 = (TextView) findViewById(R.id.moles5);
    

    【讨论】:

    • 好的。谢谢。我没有意识到这一点。我最近一直在这样做。我现在一切正常。
    【解决方案2】:

    moles5 是该行中唯一可以为空的内容。您无法在原始类型上获得空指针。不过,您似乎没有在任何地方初始化 moles5

    另外,打印数字的更好方法是说Integer.toString(moles2);

    【讨论】:

    • 谢谢。不过我不得不换成双打。我无法使用整数让它工作,但我会记住这一点。谢谢。
    • 啊,好吧..对于双精度数,您可以考虑使用 DecimalFormat 代替,这样您就可以控制显示多少小数点等。事实上,如果您愿意,它也适用于整数显示 1,000 而不是 1000。download-llnw.oracle.com/javase/1.4.2/docs/api/java/text/…
    猜你喜欢
    • 2021-07-18
    • 2018-03-22
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 2021-01-19
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多