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编辑过]