减号android string,关于android:java.lang.numberformatexception:无效的双精度字符:“”...

收到无效Double的错误

java.lang.numberformatexception无效的double:

这是什么原因

活动1

package com.example.solarcalculator;

import android.os.Bundle;

import android.widget.Button;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import android.app.AlertDialog;

import android.content.Intent;

@SuppressLint("UseValueOf")

public class MainActivity extends Activity {

private EditText input1;

private EditText input2;

private EditText input3;

private EditText input4;

private EditText input5;

private MainActivity mContext;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mContext = this;

setContentView(R.layout.activity_main);

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

Button button1 = (Button) findViewById(R.id.button1);

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

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

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

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

button1.setOnClickListener(new OnClickListener() {

@SuppressWarnings("unused")

private AlertDialog show;

@SuppressLint("UseValueOf")

@Override

public void onClick(View arg0) {

if (  (input4.getText().toString() =="")

|| (input4.getText().length() ==0) ||

(input5.getText().length() == 0)

|| (input5.getText().toString() =="")){

show = new      AlertDialog.Builder(mContext).setTitle("Error")

.setMessage("Some inputs are empty")

.setPositiveButton("OK", null).show();

}

else if ((input1.getText().length() != 0) &&

(input3.getText().length() ==0) && (input2.getText().length() ==    0)){

double w = new Double(input3.getText().toString());

double t = new Double(input4.getText().toString());

double x = new Double(input5.getText().toString());

float e = 7;

double num = 1000*x;

double den = w*t*e;

double payback = num/den;

double money = w*t*e/1000;

Intent intent = new Intent(MainActivity.this, Power.class);

intent.putExtra("payback", payback);

intent.putExtra("money", money);

startActivity(intent);

}

else if ((input1.getText().length() == 0) &&   (input3.getText().length() != 0) &&

(input2.getText().length() != 0)){

double t = new

Double(input4.getText().toString());

double x = new Double(input5.getText().toString());

double v = new Double(input2.getText().toString());

double i = new Double(input3.getText().toString());

float e = 7;

double num = 1000*x;

double den = v*i*t*e;

double payback = num/den;

double money = v*i*t*e/1000;

Intent intent = new Intent(MainActivity.this, Power.class);

intent.putExtra("payback", payback);

intent.putExtra("money", money);

startActivity(intent);

}

else {

double t = new Double(input4.getText().toString());

double x = new Double(input5.getText().toString());

double v = new Double(input2.getText().toString());

double i = new Double(input3.getText().toString());

float e = 7;

double num = 1000*x;

double den = v*i*t*e;

double payback = num/den;

double money = v*i*t*e/1000;

Intent intent = new Intent(MainActivity.this, Power.class);

intent.putExtra("payback", payback);

intent.putExtra("money", money);

startActivity(intent);

}

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

活动2

package com.example.solarcalculator;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

@SuppressLint("NewApi")

public class Power extends Activity {

private double money;

private double payback;

@SuppressLint("NewApi")

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.power);

payback = getIntent().getDoubleExtra("payback",0);

money = getIntent().getDoubleExtra("money", 0);

TextView pay = (TextView) findViewById(R.id.textView2);

String payback1 = Double.toString(payback);

pay.setText(payback1);

TextView mon = (TextView) findViewById(R.id.textView4);

String money1 = Double.toString(money);

mon.setText(money1);

}

}

我正在获取java.lang.numberformatexception无效的double:" logcat中的错误

任何人请帮忙

"不会显示双精度!您必须先测试空字符串,然后再转换为双精度。

在哪一行上会出现这种类型的错误?

我在第52行收到此错误

原因是""不是有效的double。您需要先测试String或捕获此类异常

double w;

try {

w = new Double(input3.getText().toString());

} catch (NumberFormatException e) {

w = 0; // your default value

}

代替:double amount = Double.parseDouble(amt.toString()); ,我必须这样做:提取用户输入时,double amount = new Double(amt.getText()。toString());。 谢谢。

double的值取决于设备的语言,例如,对于法语设备,数字0.179927变为0,179927,由于逗号将NumberFormatException解析为double时,它将始终抛出NumberFormatException。

您需要将分隔符从comma更改为point。

您可以通过设置区域设置或使用DecimalFormatSymbols来更改分隔符。

如果希望分组分隔符成为一个点,则可以使用欧洲语言环境:

另外,您可以使用DecimalFormatSymbols类更改由format方法生成的带格式数字中出现的符号。这些符号包括小数点分隔符,分组分隔符,减号和百分号,以及其他:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);

otherSymbols.setDecimalSeparator(',');

otherSymbols.setGroupingSeparator('.');

DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

这个答案在这里没有帮助,因为这里的异常是由空String引起的。

也许这个答案不能解决这里提出的问题,但是对于寻找相同例外的人,需要知道所有可能的问题。 就我而言,这是相同异常和代码的有效答案。

您应该执行以下操作。将其放在try catch块中

double w = new Double(input3.getText().toString());

基本上,您需要测试要转换为double的字符串是否为空。

如果为空,则可以使用一些值对其进行初始化,然后继续进行。

例如:

if(myString.isEmpty()){

myString =""+0.0;

}

double answer = Double.parseDouble(myString);

最好同时测试.equals("")和null。

考虑在EditText上有一个afterTextChanged侦听器。当您向后按并清除输入的文本时,它将通过!= null,但仍然具有""。

这为我工作:

double myDouble;

String myString = ((EditText) findViewById(R.id.editText1)).getText().toString();

if (myString != null && !myString.equals("")) {

myDouble = Double.valueOf(myString);

} else {

myDouble = 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值