【问题标题】:Conversion of string to integer, then again to string将字符串转换为整数,然后再转换为字符串
【发布时间】:2026-02-17 04:25:01
【问题描述】:

我正在进行一个在 Android 上开发应用程序的项目。在这里,我必须找到定义为字符串的两个数字之间的总和,然后将它们显示在文本视图上。但是我的应用程序崩溃了。下面是我的代码。是最优的吗?

      String price=Place_View.prices[spinner1.getSelectedItemPosition()];
            String fare=Cars.SUVFare[spinner2.getSelectedItemPosition()];
            String result="";
            int calc1=Integer.parseInt(price);
            int calc2=Integer.parseInt(fare);
            int calc3=calc1+calc2;
            result=Integer.toString(calc3);
            Price.setText(result);

        }
    });

微调器1:

public class Place_View {
public static final String[] locName = {"Sivasagar", "Jorhat", "Tinsukia", "Mohanbari", "Pasighat", "Digboi", "Majuli"};


public static final String[] prices = {"2625.00","3200.00","2000.00","500.00","4000.00","2800.00","4000.00"};
}

微调器 2:

public class Cars {
             public static final String[] SUV = {"Mahindra XUV", "Renault Duster", "Hyundai Creta", "Nissan Terrano", "Maruti Suzuki Brezza"};
                 public static final String[] SUVFare={"1000","800","800","750","650"};
}

现在我必须在选择两者之一时添加字符串价格和 SUVFare 的值并将它们放在 TextView Price 上。不知道如何发布 logcat,所以把我自定义的类。

【问题讨论】:

  • 也发布 logcat
  • 字符串很可能没有被解析为整数。 Logcat 会确认。
  • 请检查我的回答。 - @Rinkumoni Khanikar
  • 可能你正在解析一个浮点数,带小数,所以它不是整数,因此会崩溃
  • @Ivan 你说得对,我是个白痴?????????????????????

标签: java android string integer


【解决方案1】:

试试这个:

result=String.valueOf(calc3);

代替

result=Integer.toString(calc3);

【讨论】:

    【解决方案2】:
         String price=Place_View.prices[spinner1.getSelectedItemPosition()];
        String fare=Cars.SUVFare[spinner2.getSelectedItemPosition()];
        String result="";
        int calc1 = 0;
        int calc2 = 0;
        try {
             calc1 = Integer.parseInt(price);
             calc2 = Integer.parseInt(fare);
        }catch(NumberFormatException e) {
        Log.e("Error","price or fare are not a Number in string format");
        }
        int calc3=calc1+calc2;
        result=String.valueOf(calc3);
        Price.setText(result);
    

    可能是您从微调器中提取的字符串值不是数字,而是通用的非数字字符串,在您使用 Integer.parseInt 解析时可能会崩溃,只需为 NumberFormatException 添加一个捕获以避免运行时崩溃。 并根据您的用例通过显示一些消息或适合您的应用程序的任何内容来处理异常。

    【讨论】:

      【解决方案3】:

      请尝试在 Android 中将 int 转换为 String

       int number = 78;
       String numberAsString = String.valueOf(number);
      

      【讨论】:

        【解决方案4】:

        新答案

        你可能正在尝试做这样的事情:

        String price = Place_View.prices[spinner1.getSelectedItemPosition()];
        String fare = Cars.SUVFare[spinner2.getSelectedItemPosition()];
        String result="";
        float calc1=Float.parseFloat(price);   //Note: float
        int calc2=Integer.parseInt(fare);
        float calc3=calc1+calc2;               //Note: float
        result=Float.toString(calc3);          //Note: Float
        Price.setText(result);
        

        一个完整的例子:

        public class MainActivity extends AppCompatActivity {
        
            TextView Price;
            Spinner spinner1;
            Spinner spinner2;
        
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
        
                Price = findViewById(R.id.tvPrice);
                spinner1 = findViewById(R.id.spinner1);
                spinner2 = findViewById(R.id.spinner2);
        
                ArrayAdapter<String> adapterLocation = new ArrayAdapter<String>
                        (this, android.R.layout.simple_spinner_item, Place_View.locName);
        
                adapterLocation.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        
                spinner1.setAdapter(adapterLocation);
        
                ArrayAdapter<String> adapterCar = new ArrayAdapter<String>
                        (this, android.R.layout.simple_spinner_item, Cars.SUV);
        
                adapterCar.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        
                spinner2.setAdapter(adapterCar);
        
                spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        
                        String price = Place_View.prices[spinner1.getSelectedItemPosition()];
                        String fare = Cars.SUVFare[spinner2.getSelectedItemPosition()];
                        String result="";
                        float calc1=Float.parseFloat(price);
                        int calc2=Integer.parseInt(fare);
                        float calc3=calc1+calc2;
                        result=Float.toString(calc3);
                        Price.setText(result);
                    }
        
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
        
                    }
                });
        
                spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        
                        String price = Place_View.prices[spinner1.getSelectedItemPosition()];
                        String fare = Cars.SUVFare[spinner2.getSelectedItemPosition()];
                        String result="";
                        float calc1=Float.parseFloat(price);
                        int calc2=Integer.parseInt(fare);
                        float calc3=calc1+calc2;
                        result=Float.toString(calc3);
                        Price.setText(result);
                    }
        
                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {
        
                    }
                });
            }
        }
        

        旧答案

        正如快速学习者评论的那样,如果您将错误发布在您的 logcat 中,我们可能会更有帮助。

        我对您的代码有几个问题。

        1. 您确定要使用:

          getSelectedItemPosition()
          

        因为这会为您提供被点击项目的位置(第一个项目为 0,第二个项目为 1,等等)

        getItemAtPosition(position)
        

        上面的函数会给你点击位置的值。

        1. 我不完全明白这条线的作用

          String price=Place_View.prices[spinner1.getSelectedItemPosition()];
          

        您是否在视图中引用数组?

        1. 什么是价格?您是否以正确的方式引用它?

        【讨论】:

        • 价格是一个文本视图,我正在尝试在其上显示结果