当前位置: 首页 > 知识库问答 >
问题:

将两个编辑文本相乘[重复]

吴高远
2023-03-14

我正在尝试将两个EditText相乘,两个editthours和editWage并在TextView(gross)中显示结果。非常感谢任何帮助

public class PayrollActivity extends Activity implements OnClickListener {

 TextView gross, net, calculated;
 EditText editHours, editWage;
 int hours, wage, intGross, intNet, pay;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_payroll);


     gross = (TextView) findViewById(R.id.gross);
     hours= Integer.parseInt(editHours.getText().toString());
     wage = Integer.parseInt(editWage.getText().toString());
     gross.setText(hours*wage);
     net = (TextView) findViewById(R.id.net);
     calculated = (TextView) findViewById(R.id.calculated);

        ((Button) findViewById(R.id.addButton)).setOnClickListener(new     OnClickListener() {
         @Override
         public void onClick(View v) {
             // TODO Auto-generated method stub
             StringBuilder str = new StringBuilder("It worked");
             calculated.setText(str);
         }
     });    
    }

该应用程序崩溃于

hours= Integer.parseInt(editHours.getText().toString());

logcat

05-26 14:08:36.591: E/AndroidRuntime(1659): FATAL EXCEPTION: main
05-26 14:08:36.591: E/AndroidRuntime(1659): Process: co.mytms.payroll, PID: 1659
05-26 14:08:36.591: E/AndroidRuntime(1659): java.lang.RuntimeException: Unable to start activity ComponentInfo{co.mytms.payroll/co.mytms.payroll.PayrollActivity}: java.lang.NullPointerException
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.os.Looper.loop(Looper.java:136)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread.main(ActivityThread.java:5017)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at java.lang.reflect.Method.invokeNative(Native Method)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at java.lang.reflect.Method.invoke(Method.java:515)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at dalvik.system.NativeStart.main(Native Method)
05-26 14:08:36.591: E/AndroidRuntime(1659): Caused by: java.lang.NullPointerException
05-26 14:08:36.591: E/AndroidRuntime(1659):     at co.mytms.payroll.PayrollActivity.onCreate(PayrollActivity.java:22)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.Activity.performCreate(Activity.java:5231)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-26 14:08:36.591: E/AndroidRuntime(1659):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-26 14:08:36.591: E/AndroidRuntime(1659):     ... 11 more

共有1个答案

丁阳炎
2023-03-14

有几个问题。

首先,在oncreate中调用edittextgettext()方法时,它们仍然是空的(并且未初始化,请参阅@manishika答案)。因此integer.parseint将尝试解析空的字符串。将其移动到按钮的onclick方法中,这就是您想要的行为(即当您单击它时,它将edittext的两个值相乘,并将结果设置为textview)。

其次,在执行gross.setText(Hours*Walge);时,您将调用setText方法,该方法将int作为参数。Android系统将尝试加载相应的String,其id与您在Strings.xml文件中定义的id相对应。您需要调用接受charSequence作为参数的方法。gross.settext(string.valueof(小时*工资));也是如此

此外,在问题中添加stacktrace总是很好的,因为它可以帮助其他人更快地发现您的错误。

希望有帮助!:)

 类似资料:
  • 有人请解释一下。为什么下面的程序产生16个?

  • 我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想将df1的所有列(我有两列以上)与客户ID上的df2连接值相乘

  • 看看以下片段: 结果如下: 无符号短常量

  • 本文向大家介绍在Python中使用Numpy将两个矩阵相乘,包括了在Python中使用Numpy将两个矩阵相乘的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习如何使用Python中的NumPy库将两个矩阵相乘。使用NumPy库很简单。 它有一个称为点的矩阵乘法方法。您可以使用以下命令安装NumPy库。 让我们看看程序中涉及的步骤。 导入NumPy库。 初始化矩阵。 将矩阵与nump

  • 本文向大家介绍8085程序将两个16位二进制数相乘,包括了8085程序将两个16位二进制数相乘的使用技巧和注意事项,需要的朋友参考一下 现在让我们看一下Intel 8085微处理器的程序。该程序将计算两个16位数字的乘法。 问题陈述 编写8085汇编语言程序,将两个分别存储在8000H -8001H和8002H-8003H的16位数字相乘。 讨论区 该程序从存储单元8000H – 8001Hand

  • 我解决了一个编程问题,如果有两个数字A和B,我必须在乘积的二进制形式中找到1的个数。A和B的范围是[0,10^9]包括在内。这是我写的代码。 这对输入(3,4)很有效,但当我尝试(323294746475)作为输入时,代码不起作用,结果显示0作为答案。我在不同的地方放了几个输出语句进行调试,发现有了这个输入,乘法的结果是-1170032381(这是错误的),因此while循环的条件失败。所以,我像