Java 如何在edittext上显示双值-android
我正在创建一个应用程序,它从edittext中获取数字值,对它们进行计算,如折扣计算、货币兑换等,然后在另一个edittext中显示它们 我将值从string转换为Double,然后通过将Double转换为string再次在屏幕上显示它。我已经标记了计算和显示值的行 我的问题是,edittext上没有显示任何内容,logcat中也没有生成错误Java 如何在edittext上显示双值-android,java,android,android-edittext,Java,Android,Android Edittext,我正在创建一个应用程序,它从edittext中获取数字值,对它们进行计算,如折扣计算、货币兑换等,然后在另一个edittext中显示它们 我将值从string转换为Double,然后通过将Double转换为string再次在屏幕上显示它。我已经标记了计算和显示值的行 我的问题是,edittext上没有显示任何内容,logcat中也没有生成错误 public class Calculator extends Activity implements View.OnClickListener {
public class Calculator extends Activity implements View.OnClickListener {
EditText carat,list,price,total,discount,converter,discamt,caratrs;
Button submit;
Button one, two, three, four, five, six, seven, eight, nine, zero, clear,dot,calc;
double int_list=0,int_carat=0,int_discount=0,int_converter=0,int_price=0,int_total=0,int_discamt=0,int_pricers=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
carat=(EditText)findViewById(R.id.carat);
list=(EditText)findViewById(R.id.list);
price=(EditText)findViewById(R.id.price);
total=(EditText)findViewById(R.id.total);
discount=(EditText)findViewById(R.id.discount);
converter=(EditText)findViewById(R.id.converter);
discamt=(EditText)findViewById(R.id.discamt);
caratrs=(EditText)findViewById(R.id.caratrs);
submit=(Button)findViewById(R.id.submit);
calc=(Button)findViewById(R.id.calculate);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
clear=(Button)findViewById(R.id.clear);
dot=(Button)findViewById(R.id.dot);
price.setInputType(InputType.TYPE_NULL);
total.setInputType(InputType.TYPE_NULL);
carat.setInputType(InputType.TYPE_NULL);
list.setInputType(InputType.TYPE_NULL);
converter.setInputType(InputType.TYPE_NULL);
discount.setInputType(InputType.TYPE_NULL);
discamt.setInputType(InputType.TYPE_NULL);
caratrs.setInputType(InputType.TYPE_NULL);
try{
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
dot.setOnClickListener(this);
}
catch(Exception e){
}
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(carat.isFocused())
{
carat.setText("");
}
else if(price.isFocused())
{
price.setText("");
}
else if(total.isFocused())
{
total.setText("");
}
else if(list.isFocused())
{
list.setText("");
}
else if(discount.isFocused())
{
discount.setText("");
}
else if(converter.isFocused())
{
converter.setText("");
}
else if(discamt.isFocused())
{
discamt.setText("");
}
else if(caratrs.isFocused())
{
caratrs.setText("");
}
}
});
---------------------------This is where all the calculation takes place including displaying the value on the edittext-----------------------------
calc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
int_list = Double.parseDouble(list.getText().toString());
int_carat = Double.parseDouble(carat.getText().toString());
int_discount = Double.parseDouble(discount.getText().toString());
int_converter = Double.parseDouble(converter.getText().toString());
int_discamt = Double.parseDouble(discamt.getText().toString());
int_discamt = (int_list * int_discount) / 100;
int_price = int_list - int_discamt;
int_pricers = int_price * int_converter;
int_total = int_price * int_converter * int_carat;
price.setText(Double.toString(int_price));
discamt.setText(Double.toString(int_discamt));
caratrs.setText(Double.toString(int_pricers));
total.setText(Double.toString(int_total));
}
catch(NumberFormatException e)
{
e.printStackTrace();
}
}
});
}
@Override
public void onClick(View v) {
if(carat.isFocused())
{
carat.setText(carat.getText().toString() + ((Button) v).getText());
}
else if(list.isFocused())
{
list.setText(list.getText().toString() +((Button)v).getText());
}
else if(discount.isFocused())
{
discount.setText(discount.getText().toString() +((Button)v).getText());
}
else if(converter.isFocused())
{
converter.setText(converter.getText().toString() +((Button)v).getText());
}
}
}
这就是我在logcat中得到的
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ java.lang.NumberFormatException: Invalid double: ""
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at java.lang.StringToReal.invalidReal(StringToReal.java:63)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at java.lang.StringToReal.parseDouble(StringToReal.java:248)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at java.lang.Double.parseDouble(Double.java:295)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at com.diamond.traders.Calculator$2.onClick(Calculator.java:176)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.view.View.performClick(View.java:4438)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.view.View$PerformClick.run(View.java:18422)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-07 18:00:14.918 14299-14299/com.diamond.traders W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
使用
使用
似乎您正试图将空字符串解析为double。 你应向以下机构查询:
if (edittext.getText().length > 0)
似乎您正试图将空字符串解析为double。 你应向以下机构查询:
if (edittext.getText().length > 0)
必须对所有EditText字段进行验证
calc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String list = list.getText().toString().trim();
String carat = carat.getText().toString().trim();
String discount = discount.getText().toString().trim();
String converter = converter.getText().toString().trim();
String discamt = discamt.getText().toString().trim();
if(list.length() > 0 && carat.length() > 0 && discount.length() > 0
&& converter.length() > 0 && discamt.length() > 0 )
{
try {
int_list = Double.parseDouble(list.getText().toString());
int_carat = Double.parseDouble(carat.getText().toString());
int_discount = Double.parseDouble(discount.getText().toString());
int_converter = Double.parseDouble(converter.getText().toString());
int_discamt = Double.parseDouble(discamt.getText().toString());
int_discamt = (int_list * int_discount) / 100;
int_price = int_list - int_discamt;
int_pricers = int_price * int_converter;
int_total = int_price * int_converter * int_carat;
price.setText(Double.toString(int_price));
discamt.setText(Double.toString(int_discamt));
caratrs.setText(Double.toString(int_pricers));
total.setText(Double.toString(int_total));
}
catch(NumberFormatException e)
{
e.printStackTrace();
}
}else
{
Toast.makeText(context, "Please enter all value.", Toast.LENGTH_SHORT).show();
}
}
});
必须对所有EditText字段进行验证
calc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String list = list.getText().toString().trim();
String carat = carat.getText().toString().trim();
String discount = discount.getText().toString().trim();
String converter = converter.getText().toString().trim();
String discamt = discamt.getText().toString().trim();
if(list.length() > 0 && carat.length() > 0 && discount.length() > 0
&& converter.length() > 0 && discamt.length() > 0 )
{
try {
int_list = Double.parseDouble(list.getText().toString());
int_carat = Double.parseDouble(carat.getText().toString());
int_discount = Double.parseDouble(discount.getText().toString());
int_converter = Double.parseDouble(converter.getText().toString());
int_discamt = Double.parseDouble(discamt.getText().toString());
int_discamt = (int_list * int_discount) / 100;
int_price = int_list - int_discamt;
int_pricers = int_price * int_converter;
int_total = int_price * int_converter * int_carat;
price.setText(Double.toString(int_price));
discamt.setText(Double.toString(int_discamt));
caratrs.setText(Double.toString(int_pricers));
total.setText(Double.toString(int_total));
}
catch(NumberFormatException e)
{
e.printStackTrace();
}
}else
{
Toast.makeText(context, "Please enter all value.", Toast.LENGTH_SHORT).show();
}
}
});
它只是说明您试图解析为double
的字符串之一是“
确保您的EditText
具有值
您可以使用String.valueOf(total)
转换为String
注意:
- 确保您的
EditText
不是空的,使用ed.getText().toString().equals(“”
(可能需要一些其他验证,这只是一个示例)在可能出现异常时验证代码并用try-catch包围代码
- 您可能将id放置在错误的
EditText
位置,该位置在计算过程中保持为空,因此请检查
它只是说明您试图解析为double
的字符串之一是“
确保您的EditText
具有值
您可以使用String.valueOf(total)
转换为String
注意:
- 确保您的
EditText
不是空的,使用ed.getText().toString().equals(“”
(可能需要一些其他验证,这只是一个示例)在可能出现异常时验证代码并用try-catch包围代码
- 您可能将id放置在错误的
EditText
位置,该位置在计算过程中保持为空,因此请检查
lint不建议使用Double.toString()
,因为它不考虑区域设置。考虑使用<代码> String。格式化(区域设置)“%F”,123D);<代码>
例如,您可以将locale
替换为locale.US。Double.toString()
不被lint推荐,因为它不考虑区域设置。考虑使用<代码> String。格式化(区域设置)“%F”,123D);<代码>
例如,您可以用locale.US替换locale
。您确定fire onclick listener。。在calc.setOnClickListener中打印一些内容并选中请在解析为双精度之前验证gettext()值。。。可能您得到的是导致此数字格式异常的空字符串。这是您的错误:java.lang.NumberFormatException:Invalid double:“”位于com.diamond.traders.Calculator$2.onClick(Calculator.java:176)——Calculator.java:176——您确实需要验证!parseDouble()之前为空是否确定为fire onclick listener。。在calc.setOnClickListener中打印一些内容并选中请在解析为双精度之前验证gettext()值。。。可能您得到的是导致此数字格式异常的空字符串。这是您的错误:java.lang.NumberFormatException:Invalid double:“”位于com.diamond.traders.Calculator$2.onClick(Calculator.java:176)——Calculator.java:176——您确实需要验证!在parseDouble()发现问题之前为空。谢谢你的帮助。我找到了问题。谢谢你的帮助。
int_list = Double.parseDouble(list.getText().toString());
int_carat = Double.parseDouble(carat.getText().toString());
int_discount = Double.parseDouble(discount.getText().toString());
int_converter = Double.parseDouble(converter.getText().toString());
int_discamt = Double.parseDouble(discamt.getText().toString());