回 帖 发 新 帖 刷新版面

主题:新手求助

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Q2 
{

    
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);    
        char dd=0;
        do
     {
            
        System.out.println("Please input your name:");
        String name=in.next();
        System.out.println("Please input your telephone:");
        String tel=in.next();
        Pattern p=Pattern.compile("[+][0-9][0-9]-[1-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]");
        Matcher m=p.matcher(tel);
        boolean b=m.matches();
        if(b==true)
        {
         System.out.println("Please input your age:");
         int age=in.nextInt();
         if(age>=20&&age<=60)
         {
             System.out.println("Please input your Birth Month:");
             int bm=in.nextInt(); 
             if(bm>=1&&bm<=12)
             {
                 System.out.println   ( "Name="+name+"\ntelephonenumber="+tel+"\nAge="+age+"\nBirth Month="+bm);
                 System.out.println("Do you want to run this program again,enter y or n");
                 String choice=in.next();
                 dd=choice.charAt(0);
                 
             }
             else
             System.out.println("Invalid month");            
         }
         else
         System.out.println("Invalid age"); 
        }
        else
        System.out.println("Invalid telephone number");
       
      }while(dd=='y'||dd=='Y');
    }

}
为何dd非要给个初值 否则while那行就出错:The local variable dd may not have been initialized    

回复列表 (共2个回复)

沙发

...

板凳


因为do-while循环没有给dd付值是有可能的,也就是说,如果真的没有给付值,那么dd就是空的,也就是说dd对应空指针,这是不允许的,所以报错

我来回复

您尚未登录,请登录后再回复。点此登录或注册