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

时间:2023-03-10 05:41:33
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); //
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); }
}