课外天地 李树青学习天地Java程序语言课件 → 课件5下载——Java的控制语句之二


  共有18827人关注过本帖树形打印复制链接

主题:课件5下载——Java的控制语句之二

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
课件5下载——Java的控制语句之二  发帖心情 Post By:2006/2/26 21:20:54 [只看该作者]

Java的控制语句

3、循环语句
循环语句包含for、while和do while语句三种。

3、1 for语句
下面的例子是打印1到100之间所有的整数:
public class exec
{      
    public static void main(String args[])
    {
        for(int i=1;i<=100;i++)
            System.out.println(i);
    }
}

注意此时的i变量作用域只限于for中,所以,不能在for语句后直接使用i,这样可以简化编程中循环变量的定义,再如:
public class exec
{      
    public static void main(String args[])
    {
        for(int i=1;i<=100;i++)
            System.out.println(i);
        for(int i=1;i<=100;i++)
            System.out.println(i);              
    }
}

可以进一步把程序改为:
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        for(;i<=100;i++)
        {
                System.out.println(i);
        }              
    }
}

请问该程序在循环结束后,i变量值为多少?(提示:101)

进一步的改进为:
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        for(;i<=100;)
        {
                System.out.println(i);
                i++;
        }
    }
}

3、2 while语句
上述最后一个for语句程序其实完全可以换成while语句程序,如
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        while(i<=100)
        {
                System.out.println(i);
                i++;
        }
    }
}

4 其他相关语句
4、1 continue
表示的含义是退出当前循环进入下一轮循环,如
public class exec
{      
    public static void main(String args[])
    {
        int i=0;
        while(i<100)
        {
                i++;
                if(i%2==0)
                        continue;
                System.out.println(i);
        }
    }
}
输出为1到100之间所有的奇数

continue语句会导致程序可读性下降,通常建议不要使用,除非这种做法极有效率和必要。一般来说,使用其他的方式也能解决问题,如同样

的上例功能可以写为
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        while(i<=100)
        {
                if(i%2==1)
                        System.out.println(i);
                i++;
        }
    }
}

更加简单的做法是:
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        while(i<=100)
        {
                System.out.println(i);
                i+=2;
        }
    }
}

4、2 break语句
表示的含义是退出循环语句,如输出1到100之间所有的数
public class exec
{      
    public static void main(String args[])
    {
        int i=1;
        while(true)
        {
                System.out.println(i);
                i++;
                if(i>100)
                        break;
        }
    }
}

通常break语句也会导致程序可读性下降,所以建议不要使用,使用其他的方式一般也能解决问题,除非这种做法极有效率和必要。

说明:如果一个程序中的循环永远无法正常退出,称之为“死循环”,程序要避免死循环的发生。

请问这个程序是否为死循环?
public class exec
{      
    public static void main(String args[])
    {
        byte i=1;
        while(i>=1)
        {
                System.out.println(i);
                i++;
        }
    }
}
提示:并非死循环,因为变量溢出后产生的值会为0,从而小于1

4、3 return语句
表示的含义是退出当前函数,返回上级函数,当然如果当前函数是main主函数,此语句将会退出程序,如
public class exec
{      
    public static void main(String args[])
    {
        byte i=1;
        while(true)
        {
                System.out.println(i);
                i++;
                if(i>100)
                        return;
        }
    }
}

4、4 退出程序的运行
要想从程序的任意地方直接一步到位的退出程序,可以使用System.exit()方法,如
public class exec
{      
    public static void main(String args[])
    {
        byte i=1;
        while(true)
        {
                System.out.println(i);
                i++;
                if(i>100)
                        System.exit(0);
        }
    }
}

5 一个小练习(猜数字)
功能描述为:系统随机产生一个1到100间的整数,要求用户从键盘输入一个整数,如果数字小于随机值,系统提示小了;如果数字大于随机值

,则提示大了;如果猜中,提示成功。
public class exec
{      
    public static void main(String args[])
    {
        int rnd=(int)(Math.random()*100)+1;
        
        while(true)
        {
                String str=javax.swing.JOptionPane.showInputDialog("Please input the number:");
                int i=Integer.parseInt(str);
                
                if(i<rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,"<");
                else if(i>rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,">");
                else
                {
                        javax.swing.JOptionPane.showMessageDialog(null,"Succeed!");    
                        System.exit(0);
                }
        }
    }
}

进一步的改进,增添功能实现统计猜的次数:
public class exec
{      
    public static void main(String args[])
    {
        int rnd=(int)(Math.random()*100)+1;
        int counter=1;
        
        while(true)
        {
                String str=javax.swing.JOptionPane.showInputDialog("Please input the number:");
                int i=Integer.parseInt(str);
                
                if(i<rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,"<");
                else if(i>rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,">");
                else
                {
                        javax.swing.JOptionPane.showMessageDialog(null,"Succeed!\nYou get it in "+ counter + " times!");        
                        System.exit(0);
                }
                counter++;
        }
    }
}

进一步的改进,要求用户输入非法信息后程序作出合理的判断:
public class exec
{      
    public static void main(String args[])
    {
        int rnd=(int)(Math.random()*100)+1;
        int counter=1;
        
        
        while(true)
        {
                String str=javax.swing.JOptionPane.showInputDialog("Please input the number:");
                
                char[] sarray =str.toCharArray();
                for(int c=0;c<sarray.length;c++)
                        if(!Character.isDigit(sarray[c]))
                        {
                                javax.swing.JOptionPane.showMessageDialog(null,"Error input!");  
                                System.exit(0);        
                        }      
                
                int i=Integer.parseInt(str);
                
                if(i<rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,"<");
                else if(i>rnd)
                        javax.swing.JOptionPane.showMessageDialog(null,">");
                else
                {
                        javax.swing.JOptionPane.showMessageDialog(null,"Succeed!\nYou get it in "+ counter + " times!");        
                        System.exit(0);
                }
                counter++;
        }
    }
}

[此贴子已经被作者于2010-12-12 07:32:15编辑过]

 回到顶部
美女呀,离线,留言给我吧!
eva
  2楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:43 积分:2049 威望:0 精华:0 注册:2006/9/18 17:29:55
  发帖心情 Post By:2007/6/24 23:17:53 [只看该作者]

李老师:
char[] sarray =str.toCharArray();
                for(int c=0;c<sarray.length;c++)
                        if(!Character.isDigit(sarray[c]))
                        {
                                javax.swing.JOptionPane.showMessageDialog(null,"Error input!");  
                                System.exit(0);        
                        }      

这段程序是什么意思?
[此贴子已经被admin于2010-12-12 07:32:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  3楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
回复  发帖心情 Post By:2007/6/25 6:07:49 [只看该作者]

检查每个字符是否都为阿拉伯数字,防止用户输入非数字字符

 回到顶部