将空字符串解析为int

时间:2019-05-22 10:27:24

标签: java android

当我从textview解析一个空字符串时,如果我已经设置了条件(如果这样)的话,它会说unknown int“”。代码如下。

else if (naqaBoolean) {
                    int i;
                    int durasiHaidh = 24;
                    int tempohSebenar = 0;
                    for (i = 1; i < 17; i++){
                        TextView tvStatus = findViewById(getResources().getIdentifier("status" + i, "id", MainActivity.this.getPackageName()));
                        TextView tvTempoh = findViewById(getResources().getIdentifier("tempoh" + i, "id", MainActivity.this.getPackageName()));
                        TextView tvMenstruasi = findViewById(getResources().getIdentifier("menstruasi" + i, "id", MainActivity.this.getPackageName()));
                        int hariIni = 0;
                        String text = (String.valueOf(tvTempoh.getText()));
                        if(text == "Seharian"){
                            hariIni = 24;
                        } else if (text == "-"){
                            hariIni = 0;
                        } else if (text == ""){
                            hariIni = 0;
                        } else {
                            hariIni = Integer.parseInt((String) tvTempoh.getText());
                        }

                            tempohSebenar = tempohSebenar + hariIni;
                    }

                    Toast.makeText(getApplicationContext(), tempohSebenar, Toast.LENGTH_SHORT).show();
                }

1 个答案:

答案 0 :(得分:0)

开始时您使用:

String text = (String.valueOf(tvTempoh.getText()));

并用您的if进行测试。

然后,在else块中,将(String) tvTempoh.getText());解析为int。 取而代之的是,您应该使用Integet.parseInt(text);

另外,不应该使用==进行字符串比较,而应该使用.equals进行字符串比较,因为==是参考比较。如果字符串已缓存,则有时可以使用,但不能确定。

这是因为String.valueOf()与强制类型转换((String))不同。