从String转换为Int类型时抛出异常。

时间:2017-09-08 07:46:41

标签: android casting

我不知道这里出了什么问题。 代码片段

       b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                String s1=SpinnerObj.getSelectedItem().toString();
                String n1=s1.substring(s1.indexOf("Rs")+2,s1.length()-1);
                int ns1=Integer.parseInt(String.valueOf(n1));//Couldnt cast and throws Exception
                Toast.makeText(getBaseContext(),""+ns1,Toast.LENGTH_LONG).show();
                Intent i = new Intent(getBaseContext(),OrderPlaced.class);
                startActivity(i);
            }
                catch (NumberFormatException nfe) {
                Toast.makeText(getBaseContext(), "gg", Toast.LENGTH_LONG).show();
            }
        }});

这里我试图将从Spinner获取的字符串转换为整数以进行计算。

3 个答案:

答案 0 :(得分:3)

IMO你正在使用不正确的第一个子串索引尝试下面的代码

  String test = "Havells fan(Rs 900)";
        String n1=test.substring(test.indexOf("Rs")+3,test.length()-1);\\ use +3 instead of +2
        int ns1 = Integer.parseInt(String.valueOf(n1));
        Toast.makeText(getBaseContext(),""+ns1,Toast.LENGTH_LONG).show();

答案 1 :(得分:0)

也许字符串有空格。 你应该使用n1.tirm()

答案 2 :(得分:0)

根据您在评论中提供的字符串:Havells fan(Rs 900),在计算数字的起始索引时,在字符串中包含空格,因为s1.indexOf("Rs")+2(此计算将给出14)将指向空格(指数14),而不是9(指数15)。对于建议的解决方案,您可以使用任何现有答案修剪字符串(n1.trim())或计算起始索引(s1.indexOf("Rs")+3)时计算空格字符。