这段代码为什么在输入为非数字的时候无法结束进程?
一个计算回文数的题目,代码很简单,附件里面有源程序

import javax.swing.JOptionPane;
public class Class1 {

    public Class1() {
    }
    public static void main (String[] args) {
        boolean flag=false;
        String str=JOptionPane.showInputDialog("输入一个整数");
        if(str.length()>0 && str.charAt(0)!='0'){//最高位是否没有0
            for(int i=0;i<str.length();i++) if(!Character.isDigit(str.charAt(i))){flag=true;break;}//输入是否为一个数字
            if(!flag){
                    for(int i=0;i<(str.length()-i-1);i++){//判断输入是否以中间位对称
                    if(str.charAt(i)!=str.charAt(str.length()-i-1)){//如果第i位不与i的对称位不相等
                        flag=true;break;//给出标志
                    }//if
                }//for
                if(flag) JOptionPane.showMessageDialog(null,str.length()+"位数"+str+"不是回文数");
                else JOptionPane.showMessageDialog(null,str.length()+"位数"+str+"是回文数");
            }//if
            else{
                JOptionPane.showMessageDialog(null,"输入不符合要求!");
            }//else
        }//if
        else{
            JOptionPane.showMessageDialog(null,"输入不符合要求!");
        }//else
    }//main   
}//Class1