-- 作者:admin
-- 发布时间:2006/2/26 21:20:54
-- 课件5下载——Java的控制语句之二
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编辑过]
|