Java 将字符串转换为整数时出现异常

Java 将字符串转换为整数时出现异常,java,string,exception,integer,Java,String,Exception,Integer,我是Java的初学者。我使用Netbeans。下面是我的一段代码,用来制作一个简单的计算器来添加两个数字。不包括按钮的自生成代码 String str=" "; ^ 问题 String str=" "; ^ 当我尝试将函数中的字符串str转换为整数num1时,它会给出一个异常,说明: exception in thread awt-eventqueue-0 java.lang.numberformatexception for inp

我是Java的初学者。我使用Netbeans。下面是我的一段代码,用来制作一个简单的计算器来添加两个数字。不包括按钮的自生成代码

 String str=" ";
             ^
问题

 String str=" ";
             ^
当我尝试将函数
中的字符串
str
转换为整数
num1
时,它会给出一个异常,说明:

 exception in thread awt-eventqueue-0 java.lang.numberformatexception for input string  
 String str=" ";
             ^
我通过在转换语句上方打印字符串来确保字符串不是空的。代码有点长。原谅我做错了什么

 public class calc extends javax.swing.JFrame {

/**
 * Creates new form calc
 */
public String str = " "; 
public String action = " ";
public int num1;
public int num2;
public int res;
public calc() {
    initComponents();
}
  private void button3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    str=str.concat("3");

    result.setText(str);

}                                       

private void button6ActionPerformed(java.awt.event.ActionEvent evt) {                                        
 str=str.concat("6"); 
 result.setText(str);

}                                       

private void button9ActionPerformed(java.awt.event.ActionEvent evt) {                                        
 str=str.concat("9");
   result.setText(str);
}                                       

private void resultActionPerformed(java.awt.event.ActionEvent evt) {                                       

   result.setText(str);// 
}                                      

private void button1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
   str=str.concat("1");
   result.setText(str);//
}                                       

private void button2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
     str=str.concat("2");
     result.setText(str);
}                                       

private void button4ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    str=str.concat("4"); // 
    result.setText(str);
}                                       

private void button5ActionPerformed(java.awt.event.ActionEvent evt) {                                        
   str=str.concat("5");  // 
   result.setText(str);
}                                       

private void button7ActionPerformed(java.awt.event.ActionEvent evt) {                                        
 str=str.concat("7");   
 result.setText(str);//
}                                       

private void button8ActionPerformed(java.awt.event.ActionEvent evt) {                                        
 str=str.concat("8");  
 result.setText(str);//
}                                       

private void plus_buttonActionPerformed(java.awt.event.ActionEvent evt) {                                            
   System.out.println(str);
    num1=Integer.parseInt(str);
    System.out.println(num1);
    str=" ";

}                                           

private void equal_buttonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    num2=Integer.parseInt(str);
    res=num1+num2;
    str=""+res;
    result.setText(str);
}                                            


public static void main(String args[]) {


    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new calc().setVisible(true);
        }
    });
}
 String str=" ";
             ^
公共类calc扩展了javax.swing.JFrame{
/**
*创建新表单计算
*/
公共字符串str=“”;
公共字符串action=“”;
公共int num1;
公共国际单位m2;
公共信息资源;
公共计算(){
初始化组件();
}
私有void按钮3ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“3”);
结果:setText(str);
}                                       
私有void按钮6执行的操作(java.awt.event.ActionEvent evt){
str=str.concat(“6”);
结果:setText(str);
}                                       
私有void按钮9ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“9”);
结果:setText(str);
}                                       
私有void resultActionPerformed(java.awt.event.ActionEvent evt){
result.setText(str);//
}                                      
private void button1ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“1”);
结果:setText(str)//
}                                       
私有void按钮2ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“2”);
结果:setText(str);
}                                       
私有void按钮4ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“4”);//
结果:setText(str);
}                                       
私有void按钮5ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“5”);//
结果:setText(str);
}                                       
私有void按钮7ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“7”);
结果:setText(str)//
}                                       
私有void按钮8ActionPerformed(java.awt.event.ActionEvent evt){
str=str.concat(“8”);
结果:setText(str)//
}                                       
private void plus_buttonActionPerformed(java.awt.event.ActionEvent evt){
系统输出打印项次(str);
num1=整数.parseInt(str);
系统输出打印项次(num1);
str=“”;
}                                           
private void equal_buttonActionPerformed(java.awt.event.ActionEvent evt){
num2=Integer.parseInt(str);
res=num1+num2;
str=”“+res;
结果:setText(str);
}                                            
公共静态void main(字符串参数[]){
试一试{
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
if(“Nimbus”.equals(info.getName())){
setLookAndFeel(info.getClassName());
打破
}
}
}捕获(ClassNotFoundException ex){
getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(实例化异常){
getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}捕获(非法访问例外){
getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}catch(javax.swing.UnsupportedLookAndFeelException ex){
getLogger(calc.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
//
/*创建并显示表单*/
invokeLater(new Runnable()){
公开募捐{
新计算().setVisible(真);
}
});
}
您的
String str=“”;
在开始时有空格,您可以在其中使用
trim()
或set

 String str=" ";
             ^
String str=”“;
(由
Rudi
和我建议)

 String str=" ";
             ^
为了避免这种情况,最好使用
trim()
String
中删除前导和尾随SAPCE

 String str=" ";
             ^
我建议您在解析之前检查
字符串
,比如
null
检查和
Empty
检查

 String str=" ";
             ^
if(str ==null || str.trim().equals("")){
//Than don't parse
}
问题:您不能在
null
字符串上使用
concat
,它应该是空的(至少)或设置为
“0”或
“1”或可解析的整数。

您的
字符串str=“”
在开始处有空格,并且您在其中进行concat,请使用
trim()
或设置

 String str=" ";
             ^
String str=”“;
(由
Rudi
和我建议)

 String str=" ";
             ^
为了避免这种情况,最好使用
trim()
String
中删除前导和尾随SAPCE

 String str=" ";
             ^
我建议您在解析之前检查
字符串
,比如
null
检查和
Empty
检查

 String str=" ";
             ^
if(str ==null || str.trim().equals("")){
//Than don't parse
}
问题:您不能在
null
字符串上使用
concat
,字符串应为空(至少)或设置为
“0”
“1”
或可解析的整数。

 String str=" ";
             ^