Java SE 第四章

第4章 循环语句
4.1 while循环
示例:猜数字
在这里插入图片描述

import java.util.Scanner;


public class Test4_1 {
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		int number=(int)Math.random()*101;
		while(true){
			System.out.print("请输入一个数字(在0~100之间,包含0和100):");
			int n=scanner.nextInt();
			if(n>number){
				System.out.println("太大了");
			}else if(n<number){
				System.out.println("太小了");
			}else{
				System.out.println("恭喜你,猜对了!答案就是"+number);
				return;
			}
		}
	}
}

4.2 do-while循环
在这里插入图片描述
4.3 for循环
※ for语句
在这里插入图片描述
※ for嵌套语句

※ 示例:最大公约数
在这里插入图片描述

import java.util.Scanner;


public class Test4_3 {
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入两个数:");
		int m=scanner.nextInt();
		int n=scanner.nextInt();
		int Thesmall=Math.min(m, n);
		for(int i=Thesmall;i>=1;i--){
			if(m%Thesmall==0&&n%Thesmall==0){
				System.out.println("这两个数的最大公约数是:"+Thesmall);
				return;
			}
		}
	}
}

示例:预测未来学费
在这里插入图片描述

public class Test4_4 {
	public static void main(String[] args){
		int year=0;
		double Allmoney=10000;
		while(true){
			Allmoney*=1.07;
			year++;
			if(Allmoney>=20000){
				System.out.println(year);
				System.out.println(Allmoney);
				return;
			}
			
		}
	}

}

示例:将十进制转换为十六进制
在这里插入图片描述

import java.util.Scanner;


public class Test4_5 {
	public static void main(String[] args){
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入一个正整数:");
		int number=scanner.nextInt();
		String str="";
		while(number!=0){
			int num=number%16;
			if(num<10){
				str=num+str;
				
			}else{
				switch(num){
					case 10:
						str="A"+str;
						break;
					case 11:
						str="B"+str;
						break;
					case 12:
						str="C"+str;
						break;
					case 13:
						str="D"+str;
						break;
					case 14:
						str="E"+str;
						break;
					case 15:
						str="F"+str;
						break;
				}
			}
			number/=16;
		}
		
		System.out.println("OX"+str);
	}
}

4.4 嵌套循环
※ 示例:打印直角三角形


public class Test5_1 {
	public static void main(String[] args){
		for(int i=1;i<=5;i++){
			for(int j=1;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
}

※ 示例:打印菱形


public class Test5_1 {
	public static void main(String[] args){
		for(int i=1;i<=5;i++){
			for(int j=1;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
}

※ 示例:打印空心菱形


public class Test4_5 {
	public static void main(String[] args) {
		for(int i=1;i<=9;i++){
			for(int j=1;j<=Math.abs(i-5);j++){
				System.out.print(" ");
			}
			
			for(int k=1;k<=i&&k+i<=10;k++){
				if(k==1||k==i||k+i==10){
					System.out.print("* ");
				}else{
					System.out.print("  ");
				}
			}
			System.out.println();
		}
		
	}
}

4.5 break和continue
※ break语句
break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的“文明”形式!
※ continue语句
continue语句只能使用在循环语句内部,功能是跳过该次循环,继续执行下一次循环结构。在while 和 do while语句中continue语句跳转到循环条件处开始继续执行,而在for语句中continue语句跳转到迭代语句处开始继续执行。

int i= 0;
while(i<4){
    i ++;
    if(i == 2){
    continue;
    }
   systerm.out.println(i);
}

运行结果:1 3 4

※ return语句
Java中return用于方法,两个作用:
(1)返回方法指定类型的值(这个值总是确定的),也可以是对象
(2)方法的结束

两种形式:(1)有返回类型 例如:return i;

      (2)无返回类型  return;

一般方法前有void代表无返回值,没有void有返回值。
※ 示例:判断回文串


public class Test4_6 {
	public static void main(String[] args) {
		boolean flag=true;
		String s="上海自来水来自海上";
		for(int m=0,n=s.length()-1;m<s.length()/2&&n>s.length()/2;m++,n--){
			if(s.charAt(m)!=s.charAt(n)){
				flag=false;
				break;
			}
		}
		if(flag){
			System.out.println("是回文数字");
		}else{
			System.out.println("不是回文数字");
		}
	}
}

※ 显示素数


public class Test4_7 {
	public static void main(String[] args) {
		int count=0;
		int number=1;
		while(count<=50){
			boolean flag=true;
			for(int i=2;i<=number/2;i++){
				if(number%i==0){
					flag=false;
					break;
				}
			}
			if(flag){
				System.out.print(number+" ");
				count++;
				if(count%10==0){
					System.out.println();
				}
			}
			number++;
		}
	}
}

本章小结
1.循环语句有三类: while 循环、 do-while 循环和 for 循环。
2.循环中包含重复执行的语句的部分称为循环体。
3.循环体执行一次称为循环的一次迭代。
4.无限循环是指循环语句被无限次执行。
5.在设计循环时, 既需要考虑循环控制结构, 还需要考虑循环体。
6.while 循环首先检査循环继续条件。 如果条件为 true, 则执行循环体; 如果条件为 false, 则循环结 束。
7.do-while 循环与 while 循环类似, 只是 do-while 循环先执行循环体, 然后再检査循环继续条件, 以确定是继续还是终止。
8.while 和 do-while 循环常用于循环次数不确定的情况。
9.标记值是一个特殊的值, 用来标记循环的结束。
10.for 循环一般用在循环体执行次数固定的情况。
11.for 循环控制由三部分组成。 第一部分是初始操作, 通常用于初始化控制变量。 第二部分是循环继 续条件, 决定是否执行循环体。 第三部分是每次迭代后执行的操作, 经常用于调整控制变量。 通常, 在控制结构中初始化和修改循环控制变量。
12.while 循环和 for 循环都称为前测循环( pretest loop), 因为在循环体执行之前, 要检测一下循环 继续条件。
13.do-while 循环称为后测循环( posttest loop), 因为在循环体执行之后, 要检测一下这个条件。
14.在循环中可以使用 break 和 continue 这两个关键字。
15.关键字 break 立即终止包含 break 的最内层循环。
16.关键字 continue 只是终止当前迭代。

编程练习题
在这里插入图片描述

import java.util.Scanner;


public class Demo4_1 {
	public static void main(String[] args) {
		int positivenumber=0;
		int positivesum=0;
		int negativesum=0;
		int negativenumber=0;
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter an integer ,the input ends if it is o:");
		
		while(true){
			int integer=scanner.nextInt();
			if(integer>0){
				positivenumber++;
				positivesum+=integer;
				
			}else if(integer<0){
				negativenumber++;
				negativesum+=integer;
				
			}else{
				break;
			}
		}
		int sum=positivesum+negativesum;
		double average=1.0*sum/(positivenumber+negativenumber);
		System.out.println("The number of positive is:"+positivenumber);
		System.out.println("The number of negative is:"+negativenumber);
		System.out.println("The total is:"+sum);
		System.out.println("The average is:"+average);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_2 {
	public static void main(String[] args) {
		double firstScore=0.0;
		double secondScore=0.0;
		String firstName="";
		String secondName="";
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入学生的个数:");
		int sum=scanner.nextInt();
		
		for(int n=1;n<=sum;n++){
			System.out.print("请输入分数:");
			double score=scanner.nextDouble();
			System.out.print("请输入姓名:");
			String name=scanner.next();
			if(score>=firstScore){
				secondScore=firstScore;
				secondName=firstName;
				firstScore=score;
				firstName=name;
			}else{
				if(score>secondScore){
					secondScore=score;
					secondName=name;
				}
			}
		
		
		}
		System.out.println("第一高分是:"+firstScore+"姓名是:"+firstName);
		System.out.println("第二高分是:"+secondScore+"姓名是:"+secondName);
	}
}


在这里插入图片描述


public class Demo4_3 {
	public static void main(String[] args) {
		int count=0;
		for(int n=100;n<=200;n++){
			if(n%5==0&&n%6!=0||n%6==0&&n%5!=0){
				System.out.print(n+" ");
			
				count++;
				if(count%10==0){
				System.out.println();
				}
			}
		}
	}
}

在这里插入图片描述


public class Demo4_4 {
	public static void main(String[] args) {
		int n=1;
		while(n*n<=12000){
			n++;
		}
		System.out.println(109*109);
		System.out.println(n);//110
		n=1;
		while(n*n*n<=12000){
			n++;
		}
		System.out.println(n*n*n);
		System.out.println(n-1);
		System.out.println(22*22*22);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_5 {
	public static void main(String[] args) {
		
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter a number:");
		int number=scanner.nextInt();
		while(true){
			boolean flag=false;
			for(int i=2;i<=number/2;i++){
				if(number%i==0){
					System.out.print(i+" ");
					number/=i;
					flag=true;
					break;
				}
			}
			if(!flag){
				System.out.print(number);
				break;
			}
		}
	}
}


在这里插入图片描述



public class Demo4_6 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter the line:");
		int line=scanner.nextInt();
		for(int i=1;i<=line;i++){//行数
			for(int k=1;k<=line-i;k++){
				System.out.print("   ");
			}
			//-1 
			//-2 -1   2
			for(int j=-i;j<=i;j++){
				if(j!=0&&j!=1){
//					System.out.print(Math.abs(j)+"\t");
					System.out.printf("%-3d",Math.abs(j));
					//3d "  1" " 12" "123"
					//-3d "1  " "12 " "123"
				}
			}
			System.out.println();
		}
	}
}

在这里插入图片描述


public class demo4_7 {
	public static void main(String[] args) {
//		for(int i=1;i<=6;i++){
//			for(int j=1;j<=i;j++){
//				System.out.print(j);
//			}
//			System.out.println();
//		}
//		for(int i=1;i<=6;i++){
//			for(int j=1;j<=7-i;j++){
//				System.out.print(j);
//			}
//			System.out.println();
//		}
//		for(int i=1;i<=6;i++){
//			for(int j=1;j<=6-i;j++){
//				System.out.print(" ");
//			}
//			for(int k=i;k>=1;k--){
//				System.out.print(k);
//			}
//			System.out.println();
//		}
		for(int i=1;i<=6;i++){
			for(int j=1;j<=i-1;j++){
				System.out.print(" ");
			}
			for(int k=1;k<=7-i;k++){
				System.out.print(k);
			}
			System.out.println();
		}
	}
	
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_8 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入行数:");
		int line=scanner.nextInt();
		for(int i=1;i<=line;i++){
			for(int j=1;j<=line-i;j++){
				System.out.print("    ");
			}
			for(int k=-(i-1);k<=i-1;k++){
				if(k<=0){
					System.out.printf("%-4d",(int)Math.pow(2,k+i-1));
				}else{
					System.out.printf("%-4d",(int)Math.pow(2,-k+i-1));
				}
			}
			System.out.println();
		}
	}
}

在这里插入图片描述


public class Demo4_9 {
	public static void main(String[] args) {
		double num=0;
		for(int n=1;n<=49;n++){
			num+=1.0*(2*n-1)/(2*n+1);
		}
		System.out.println(num);
	}
}

在这里插入图片描述


public class Demo4_10 {
	public static void main(String[] args) {
		double flag=1.0;
		double sum=0.0;
		for(int i=1;i<=10000;i++){
			sum+=1.0*flag/(2*i-1);
			flag=-flag;
		}
		System.out.println(4*sum);
	}
}

在这里插入图片描述



public class Demo4_11 {
	public static void main(String[] args) {
		double e=1;
		for(int i=1;i<=10000;i++){
			double multi=1.0;
			//i=5
			for(int j=1;j<=i;j++){
				multi=multi*j;
			}
			e=e+1/multi;
		}
		System.out.println(e);
	}
}

在这里插入图片描述


public class Demo4_12 {
	public static void main(String[] args) {
		int count=0;
		for(int n=101;n<=2100;n++){
			if(n%4==0&&n%100!=0||n%400==0){
				System.out.print(n+" ");
				count++;
				if(count%10==0){
					System.out.println();
			}
			
			}
		}
	}
}

在这里插入图片描述

import java.util.Scanner;
public class Demo4_13 {
	public static void main(String[] args) {
		//输入年份 星期
		//输出每个月的第一天是星期几
		//1.1 2.1 3.1...12.1
		int year;
		int week;
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter year and week:");
		year=scanner.nextInt();//2013
		week=scanner.nextInt();
		int m=0,y=0,k=0,j=0,h=0;
		String monthStr="";
		String weekStr="";
		for(int month=1;month<=12;month++){
			m=month;
			y=year;//2013
			if(m==1||m==2){
				m+=12;
				y--;
			}
			k=y%100;
			j=y/100;
			h=(1+26*(month+1)/10+k+k/4+j/4+5*j)%7;
			switch (month) {
				case 1:
					monthStr="January";
					break;
				case 2:
					monthStr="February";
					break;
				case 3:
					monthStr="March";
					break;
				case 4:
					monthStr="April";
					break;
				case 5:
					monthStr="May";
					break;
				case 6:
					monthStr="June";
					break;
				case 7:
					monthStr="July";
					break;
				case 8:
					monthStr="August";
					break;
				case 9:
					monthStr="September";
					break;
				case 10:
					monthStr="October";
					break;
				case 11:
					monthStr="November";
					break;
				case 12:
					monthStr="December";
					break;
			}
			switch (h) {
				case 0:
					weekStr="Saturday";
					break;
				case 1:
					weekStr="Sunday";
					break;
				case 2:
					weekStr="Monday";
					break;
				case 3:
					weekStr="Tuesday";
					break;
				case 4:
					weekStr="Wednesday";
					break;
				case 5:
					weekStr="Thursday";
					break;
				case 6:
					weekStr="Friday";
					break;
			}
			System.out.println(monthStr+" 1,"+year+" is "+weekStr);
		}
	}
}

在这里插入图片描述


public class Demo4_15 {
	public static void main(String[] args) {
		int sum=0;
		for(int i=1;i<=10000;i++){
			for(int n=1;n<=i/2;n++){
				if(i%n==0){
					sum+=n;
				}
			}
			if(sum==i){
				System.out.println(i);
			}
			sum=0;
		}
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_16 {
	public static void main(String[] args) {
		//定义两个计数器 分别记录电脑赢得次数和玩家赢得次数
		//cCount pCount;
		int cCount=0;
		int pCount=0;
		Scanner scanner=new Scanner(System.in);
		while(true){
			System.out.print("请输入 0剪刀 1石头 2布:");
			int p=scanner.nextInt();
			int c=(int) (Math.random()*3);
			
			if(p==c){
				System.out.println("平局,请继续!");
			}
			if(p==0&&c==1){
				System.out.println("玩家剪刀,电脑石头,电脑赢!");
				cCount++;
			}
			if(p==0&&c==2){
				System.out.println("玩家剪刀,电脑布,玩家赢!");
				pCount++;
			}
			if(p==1&&c==0){
				System.out.println("玩家石头,电脑剪刀,玩家赢!");
				pCount++;
			}
			if(p==1&&c==2){
				System.out.println("玩家石头,电脑布,电脑赢!");
				cCount++;
			}
			if(p==2&&c==0){
				System.out.println("玩家布,电脑剪刀,电脑赢!");
				cCount++;
			}
			if(p==2&&c==1){
				System.out.println("玩家布,电脑石头,玩家赢!");
				pCount++;
			}
			if(cCount==2||pCount==2){
				break;
			}
		}
		if(cCount==2){
			System.out.println("最终 电脑获胜");
		}else{
			System.out.println("最终 玩家获胜");
		}
	}
}

在这里插入图片描述


public class Demo4_17 {
	public static void main(String[] args) {
		double sum=0.0;
		for(int i=1;i<=624;i++){
			
			sum+=1.0/(Math.sqrt(i)+Math.sqrt(i+1));
		}
		System.out.println(sum);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_18 {
	public static void main(String[] args) {
		String s="";	
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入一个十进制数字:");
		int number=scanner.nextInt();
		while(true){
			int n=number%2;
			s=n+s;
			number/=2;
			if(number==0){
				break;
			}
		}
		System.out.println("0"+s);
	
	}
}

import java.util.Scanner;


public class Demo4_18 {
	public static void main(String[] args) {
		String s="";	
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入一个八进制数字:");
		int number=scanner.nextInt();
		while(true){
			int n=number%8;
			s=n+s;
			number/=8;
			if(number==0){
				break;
			}
		}
		System.out.println("0"+s);
	
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_19 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int max=0;
		int count=0;
		System.out.print("请输入一串数字,并且以0结束输入:");
		while(true){
			int number=scanner.nextInt();
			if(number>max){
				max=number;
				count=1;
			}else if(number==max){
				count++;
			}else if(number==0){
				break;
			}
		}
		System.out.println("最大的数字为:"+max);
		System.out.println("出现的次数为:"+count);
	}
}

在这里插入图片描述


public class Demo4_20 {
	public static void main(String[] args) {
		int count=0;
		for(int n=1;n<=7;n++){
			for(int m=n+1;m<=7;m++){
				System.out.println(n+":"+m);
				count++;
			}
		}
		System.out.println(count);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_21 {
	public static void main(String[] args) {
		//总和 sum 所有数字的和
		//平方和 powSum 所有数字的平方的和
		Scanner scanner=new Scanner(System.in);
		double sum=0;
		double powSum=0;
		System.out.print("Enter 10 numbers:");
		for(int i=1;i<=10;i++){
			double num=scanner.nextDouble();
			sum+=num;
			powSum+=num*num;
		}
		double mean=sum/10;
		double sd=Math.sqrt(  (powSum-sum*sum/10)/9 );
		System.out.println("mean ="+mean);
		System.out.println("sd ="+sd);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_21 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入第一个字符串:");
		String s1=scanner.nextLine();
		System.out.print("请输入第二个字符串:");
		String s2=scanner.nextLine();
		int min=Math.min(s1.length(), s2.length());
		for(int i=0;i<=min-1;i++){
			if(s1.charAt(i)==s2.charAt(i)){
				System.out.print(s1.charAt(i));
			}else if(s1.charAt(i)!=s2.charAt(i)){
				break;
			}
		}
	}
}

在这里插入图片描述

import java.util.Scanner;
public class Demo4_23 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter a string:");
		String str=scanner.nextLine();
		int count=0;
		for(int i=0;i<str.length();i++){
			if(str.charAt(i)>=65&&str.charAt(i)<=90){
				count++;
			}
		}
		System.out.println(count);
	}
}

在这里插入图片描述

import java.util.Scanner;


public class Demo4_23 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String s=scanner.nextLine();
		int n=s.length()-1;
		for(int i=0;i<=n;i++){
			if(i%2==0){
				System.out.print(s.charAt(i));
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/w_Antetokounmpo/article/details/83001269