------- android培训、java培训、期待与您交流! ----------
一、for循环
for循环是更加简洁的循环语句,大部分情况for循环可以替代while循环、dowhilewhile循环,一般情况下,for循环用于一直循环次数的情况,而while用于未知次数不确定的情况。
for 循环的基本语法格式如下:
package javase_day05;
public class for循环 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(初始化语句;循环条件语句;迭代语句)
{
循环体;
}
}
}
与前面循环类似,如果循环体部分的循环体只有一行语句,则花括号可以省略
for循环可以可以指定多个初始化变量,但只能有一个声明语句。
for循环括号里除了分号不能省略之外其他的语句都可以省略例如
for( ; ; ;)
{
循环体;
}
这样的写法将会是一个死循环!
说明:如果遇到死循环,可以用ctrl+c直接退出
for循环里定义的变量,其作用域仅在该循环内有效,for循环终止以后这些变量将不可以被访问。
如果想在循环完之后还继续访问里面的变量可以将变量定义在循环外面。
int i = 0;
for( ; i<10; i++)
{
System.out.println("循环开始")
}
二、嵌套循环
如一个把一个循环方在另一个循环体内,那么就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环循环嵌套for循环,也可以是while循环嵌套dowhile循环
下面是一耳光九九乘法表的for嵌套循环:
package javase_day05;
public class for循环 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1; i <=9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println("");
}
}
}
三、控制循环结构
Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序灵活控制的灵活性。为了弥补这种不足Java提供了break和continue来控制循环
break语句不仅可以结束其所在的循环,还可以直接结束起外层循环,此时需要在break后面紧跟一个标签,这个标签用于表示一个外层循环。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请您输入学生的姓名:");
int score = 0;
boolean wrong = true;
String name = input.next();
for (int i = 0; i < 5; i++) {
System.out.print("请输入5门功课中第" + (i + 1) + "门课的成绩: ");
int num = input.nextInt(); // 从控制台接收数据
if (num< 0) {
wrong = false; // 出错标识
break; // 退出循环
}
score+=num;
}
if(!wrong)
System.out.println("您输入的成绩错误!!!");
System.out.println(name+"的平均分为:"+score/5);
}
}
同理continue也是
public class Test8{
public static void main(String[] args) {
// 外循环遍历所有的3位整数
out:for(int x = 100;x<1000;x++){
// 内循环从2开始,遍历到根号x为止能被整除的数
for(int y= 2;y<=Math.sqrt(x);y++){
// 如果能整除则不是质数,停止内循环
if(x%y==0)
continue out;
}
System.out.println(x);
}
}
}
除了使用break来强制结束循环之外还可以用return来结束整个循环
return关键字并不是专门用来结束循环的,return的功能是结束一个方法,当一个方法执行到return语句时,整个方法将被结束。
与break和continue不同的是return直接结束整个方法,不管这个return处于多少层循环之内!
练习:利用for语句打印出
**
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
**
package itheima.day02;
public class Test {
/*自己两个月之前没写出来,看了答案之后自己写了一遍,两个月之后在写还是没写出来!
* 原因:1.中间的高度rec-i这个高度不确定,个人觉得这是这道题的难点
* 2,开放之后忘记取整,直接转换成int类型了,导致数据丢失
* 3,将循环体里面的空格和星号放在一起打印了!
* 4,打印出来的园不圆的原因是空格数太少,可以改成两个空格。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int rec = 7;
for (int i = 0; i < rec; i++) {
// 这是上半部的园
int temp =(int)Math.round(Math.sqrt((rec*rec)-((rec-i)*(rec-i))));
int bs = rec-temp;
int ms = 2*temp;
for (int j = 0; j < bs; j++) {
System.out.print(" ");
}
System.out.print("*");
for (int j = 0; j < ms; j++) {
System.out.print(" ");
}
System.out.println("*");
}
for (int i = 0; i <= rec; i++) {
int width = (int)Math.round(Math.sqrt((rec*rec) - (i*i)));
int prespace = rec - width;
int midspace = 2*width;
for (int j = 0; j < prespace; j++) {
System.out.print(" ");
}
System.out.print("*");
for (int j = 0; j < midspace; j++) {
System.out.print(" ");
}
System.out.println("*");
}
}
}