Rss & SiteMap

课外天地 李树青 http://www.njcie.com

李树青 论坛 南京 财经 课外天地
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
admin 发表于: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编辑过]
2楼
eva 发表于: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编辑过]
3楼
admin 发表于:2007/6/25 6:07:49
检查每个字符是否都为阿拉伯数字,防止用户输入非数字字符
共3 条记录, 每页显示 10 条, 页签: [1]

Copyright ©2002 - 2016 课外天地.Net
Powered By Dvbbs Version 8.3.0
Processed in .06250 s, 2 queries.