day04-java-循环结构(while、do-while、for)

    循环结构(while、do-while、for)    

任何复杂的程序逻辑都可以通过三种结构来实现:
1)顺序结构:从上往下逐行执行,每句必走
2)分支结构:有条件的执行某语句一次,并非每句必走
3)循环结构:有条件的执行某语句多次,并非每句必走


1.循环:反复执行一段相同或相似的代码


2.循环三要素:
  1)循环变量的初始化
  2)循环的条件(以循环变量为基础)
  3)循环变量的改变(向着循环的结束变)
  循环变量:在循环过程中所改变的那个量


3.循环结构:
  1)while:先判断后执行,有可能一次都不执行
  2)do...while:先执行后判断,至少执行一次
               第1要素与第3要素相同时首选
  3)for:应用率最高,固定次数循环


4.break:跳出循环
  continue:跳过循环体中剩余语句而进入下一次循环

Math.random():
Math.random()-------------0.0到0.9999999999...
*1000---------------------0.0到999.99999999...
+1------------------------1.0到1000.9999999...
(int)---------------------0到999
+1------------------------1到1000

for-随机加法运算器

package day04;
import java.util.Scanner;
//随机加法运算器
public class Addition {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int score = 0; //总分
        for(int i=1;i<=10;i++){ //10次
            int a = (int)(Math.random()*100); //加数1
            int b = (int)(Math.random()*100); //加数2
            int result = a+b; //
            System.out.println("("+i+")"+a+"+"+b+"=?"); //1.出题
            System.out.println("算吧!");
            int answer = scan.nextInt(); //2.答题
            if(answer==-1){ //3.判题
                System.out.println("下次再来吧!");
                break; 
            }
            if(answer==result){
                score += 10; //答对一题加10分
                System.out.println("答对了");
            }else{
                System.out.println("答错了");
            }
        }
        System.out.println("score="+score);
    }
}

while循环演示:

package day04;
//while循环的演示
public class Addition {
    public static void main(String[] args) {
        int num = 1;
        while(num<10){
            System.out.println(num+"*9="+num*9);
            num++;
        }
        System.out.println("over");
    }
}

do while循环演示:

package day04;
import java.util.Scanner;
//猜数字小游戏
public class Addition {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*1000+1); //1到1000之内的随机数
        System.out.println(num); //作弊
        int guess;
        do{
            System.out.println("猜吧!");
            guess = scan.nextInt(); //1,3
            if(guess==0){
                break;
            }
            if(guess>num){
                System.out.println("太大了");
            }else if(guess<num){
                System.out.println("太小了");
            }
        }while(guess!=num); //2
        if(guess==num){
            System.out.println("恭喜你,猜对了!");
        }else{
            System.out.println("下次再来吧!");
        }
    }
}
        

 数列求和

计算1+2+3+4+5...+100的和;
package day04;
//计算1+2+3+4+5...+100的和;
import java.util.Scanner;
public class Addition {
    public static void main(String[] args) {
        int num = 0;
        for(int i=1;i<=100;i++){
            num = num + i;
        }
        System.out.println(num);
    }
}
结果:5050

有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和,并在控制台输出结果:

方法一:
public class SumOfSeq {
        public static void main(String[] args) {
            // 数列求和
            long nine = 9;
            long result = nine;
            for (int i = 2; i <= 10; i++) {
                nine = nine * 10 + 9;
                result += nine;
            }
            System.out.println("9+99+999+...+9999999999=" + result);
        }
    }

方法二:
public class Test01 {

    public static void main(String[] args) {
        //9+99+999+9999+...+9999999999=?
        long sum = 0; //
        long num = 0; //加数
        for(int i=1;i<=10;i++){ //10次
            num = num*10+9;
            sum = sum+num;
        }
        System.out.println("sum="+sum);

    }
}

另有数列:1+1/2+1/3…+1/n(n>=2)。要求使用交互的方式计算此数列的和:用户在控制台录入需要计算的整数 n 的值,程序计算此数列的和,并在控制台输出结果。

方法一:
import java.util.Scanner;
    public class SumOfSeq2 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入整数(例如10):");
            int n = scanner.nextInt();
            double result = 0;
            for (int i = 1; i < n; i++) {
                result += 1.0 / i;
                if(i==1){
                    System.out.print("1+");
                }else{
                    System.out.print("1/" + i + "+");    
                }
            }
            result += 1.0 / n;
            System.out.print("1/" + n + "=" + result);
        }
    }

方法二:
public class Test01 { public static void main(String[] args) { //1/1+1/2+1/3+...+1/n=? int n = 15; double sum = 0; for(int i=1;i<=n;i++){ //n次 sum = sum+1.0/i; } System.out.println("sum="+sum); } }

 

posted @ 2016-12-05 21:57  唐胜伟  阅读(491)  评论(0编辑  收藏  举报