循环结构(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); } }