java基础3【for、while循环】

java基础3

【文章是用来帮助自己巩固知识的,如果有什么不对的地方,还望评论指出,理性探讨】
break、continue、switch
  1. break:用于选择结构和循环结构,表示结束当前的一层结构
  2. continue:只能用于循环结构,表示跳过本次循环继续下次循环(只能跳过一层循环)
  3. switch()中需要一个选项,选项只能是byte/short/char/int,从JDK1.7开始,允许使用String
  4. 如果每一个case之后都有break,case顺序不影响结果
  5. 如果有一个或者多个case之后没有break,那么这个时候case之间的顺序影响结果,顺次往下执行,直到遇到break;
  6. 只要其他的case都不符合则自动划归到default,最好加上break;

1
目录,再往上一拉

// 输入一个数字,输出这个数字是一个几位数
// 整除10,判断商,为0,就是个数
public static int lengthNum(int num) {
int count=0; //计数
while(num>=1) {
num/=10;
count++;
}
return count;
}

2
目录,再往上一拉

// 输入数字表示月份,然后输出这个月份对应的天数(平年)
		// 31天:1 3 5 7 8 10 12
		// 30天:4 6 9 11
		// 28天:2
		int month = s.nextInt();
		switch(month){
			case 1: 
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				System.out.println(31);break;
			case 4:
			case 6:
			case 9:
			case 11:
				System.out.println(30);
				break;
			case 2:
				System.out.println(28);
				break;
			default:
				System.out.println("Illegal month!!!");break;
		}

目录,再往上一拉

 import java.util.Scanner;
public class SwitchCaseExer2 {
	// 练习:输入三个数字表示年月日,输出这一天在这一年是第几天
	// 需要判断平年闰年:逢百整除400;不逢百整除4

	public static void main(String[] args){
		
		// 获取年月日
		Scanner s = new Scanner(System.in);
		int year = s.nextInt();
		int month = s.nextInt();
		int day = s.nextInt();
		
		// 定义一个变量来记录总天数
		int sum = 0;
		
		// 根据月份确定到底要加上多少天
		switch(month){
			case 12:sum += 30; // 经历11月的30天
			case 11:sum += 31; // 经历10月的31天
			case 10:sum += 30;
			case 9: sum += 31;
			case 8: sum += 31;
			case 7: sum += 30;
			case 6: sum += 31;
			case 5: sum += 30;
			case 4: sum += 31;
			case 3: // 加上2月的天数 - 平年和闰年的判断
				if(year % 100 != 0 && year % 4 == 0 || year % 400 == 0){
					sum += 29;
				} else {
					sum += 28;
				}
			case 2: sum += 31;
			case 1: sum += day;
		}
		System.out.println(sum);
		
	}
	
}
for、(if、 else if、else)、(while、do while)
  1. for()内有3部分组成,对于for循环而言,如果第二部分的控制条件没有写,那么默认为true,这个时候就成了一个死循环
  2. 习惯上如果变化不规律或者次数不确定一般使用while循环;如果变化规律或者是次数固定,一般是用for循环
for循环的例子

目录,再往上一拉 
0

public class LoopExer {
	//  一个for循环实现99乘法表
	public static void main(String[] args){
	
		/*
			*
			**
			***
			****
			*****
		*/
		for(int i = 1, j = 1; i <= 9; j++){
			// 无论哪一行,上来都是先打印*
			System.out.print("*");
			// 判断是否是打印完成本行最后一个*
			if(j == i){
				// 换行
				System.out.println();
				// 行数+1
				i++;
				// *从头重新开始计数
				j = 0;
			}
		}
	
	}

}

1
目录,再往上一拉

public class LoopExer {

	public static void main(String[] args){
		// 打印九九乘法表
		
		/*
		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();
			
		}
		*/
		
		/*
			    *****
			   *****
			  *****
			 *****
			*****
		*/
		/*
		for(int i = 1; i <= 5; i++){
			
			for(int j = 1; j <= 5 - i; j++)
				System.out.print(" ");
			
			for(int j = 1; j <= 5; j++)
				System.out.print("*");
			
			System.out.println();
		}
		*/
		
		/*
				  **     **
				 ****   ****
				****** ******
			   ***************
			    *************
				 ***********
				  *********
				   *******
				    *****
				     ***
				      *
		*/
		// 百钱百鸡 --- 3文钱1只公鸡,2文钱1只母鸡,1文钱3只小鸡;100文钱如何买恰好100只鸡?
		// 计算机的运算就是凑数,满足3个条件:100只小鸡,100块钱,小鸡的个数是整数
		for(int i = 1; i < 33; i++){ // 表示公鸡的个数
			for(int j = 1; j < 50; j++){// 表示母鸡的个数
				// 计算小鸡的个数
				int k = 100 - i - j;
				if(k % 3 == 0 && i * 3 + j * 2 + k / 3 == 100){
					System.out.println("公鸡" + i);
					System.out.println("母鸡" + j);
					System.out.println("小鸡" + k);
					System.out.println("==================");
				}
			}
			
		}
		
	}

}

2
目录,再往上一拉

import java.util.Scanner;
public class LoopDemo2 {
	
	public static void main(String[] args){
		
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		
		// 标记这个数字是否是一个质数
		// 规定如果为true表示是一个质数,如果为false表示不是一个质数
		boolean b = true;
		
		// 判断一个数字是否是一个质数
		// 从2开始逐个往后取余,看是否还有别的因数,如果没有别的因数,那么就是一个质数,反之就说明不是质数
		
		for(int i = 2; i < n; i++){
			// 如果能够取余,说明n除了1和本身以外还有别的因数,那么n就不是质数
			if(n % i == 0){
				b = false;
				break;
			}
			
		}
		
		if(b)
			System.out.println(n + "是一个质数");
		else 
			System.out.println(n + "不是一个质数");
		
	}
	
}

3
目录,再往上一拉

public class LoopDemo {

	public static void main(String[] args){
		// *******
		/*
		for(int i = 1; i <= 7; i++){
			// 不换行打印
			// ln -> line
			System.out.print("*");
		}
		System.out.println();
		*/

		/*
			*******
			*******
			*******
			*******
		*/
		// 循环的嵌套
		/*
		for(int count = 1; count <= 5; count++){
			for(int i = 1; i <= 7; i++){
				System.out.print("*");
			}
			System.out.println();
		}
		*/

		/*
			*
			**
			***
			****
			*****
			******
			行数:1 -> n
			第i行*的个数:1->i
		*/
		/*
		for(int i = 1; i <= 6; i++){
			for(int j = 1; j <= i; j++){
				System.out.print("*");
			}
			System.out.println();
		}
		*/
		/*
			******
			*****
			****
			***
			**
			*
			行数:n -> 1
			每一行的*的个数:i -> 1
		*/
		/*
		for(int i = 6; i > 0; i--){
			for(int j = i; j > 0; j--){
				System.out.print("*");
			}
			System.out.println();
		}
		*/
		
		/*
			-----*
			----**
			---***
			--****
			-*****
			******
			行数:1 -> n
			空格的个数:1 -> n-i
			*的个数:1 -> i
		*/
		/*
		for(int i = 1; i <= 6; i++){
			// 先打印空格
			for(int j = 1; j <= 6 - i; j++){
				System.out.print(" ");
			}
			// 打印*
			for(int k = 1; k <= i; k++){
				System.out.print("*");
			}
			System.out.println();
		}
		*/
		
		/*
			******
			 *****
			  ****
			   ***
			    **
				 *
			行数: n -> 1
			空格个数: n-i -> 1
			*的个数: i -> 1
		*/
		for(int i = 6; i > 0; i--){
			
			for(int j = 6 - i; j > 0; j--)
				System.out.print(" ");
			
			for(int j = i; j > 0; j--)
				System.out.print("*");
			
			System.out.println();
			
		}
		
	}

}
while循环的例子

目录,再往上一拉

import java.util.Scanner;
public class WhileExer {

	public static void main(String[] args){
		
		// 1. 求1-100以内所有的奇数的和
		/*
		// 记录和
		int sum = 0;
		int i = 1;
		while(i <= 100){
			sum += i;
			i += 2;
		}
		System.out.println(sum);
		*/
		
		// 2. 打印100以内能被3整除而不能被7整除的数字
		// 思路:先获取所有的3的倍数,然后再判断这个倍数能否被7整除
		/*
		int i = 0;
		while(i <= 100){
			
			// 判断能否被7整除
			if(i % 7 != 0)
				System.out.println(i);
			
			i += 3;
		}
		*/
		
		// 3. 输入一个数字,输出这个数字是一个几位数
		// 思路:看能除以几次10
		/*
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		int count = 0;
		while(n != 0){
			n /= 10;
			count++;
		}
		System.out.println(count);
		*/
}

2
目录,再往上一拉

// 4. 输入一个数字,输出这个数字的所有的因数
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		int i = 1;
		while(i <= n){
			
			if(n % i == 0)
				System.out.println(i);
			
			i++;
		}
 		5 读入一个三位数,计算其各位数字之和。例如: 123,各位数字之和为6*/
		class Exer7{
			public static void sum(int n){
				int i = n % 10;
				int j = n / 10;
				int k = j % 10;
				int l = n / 100;
				System.out.println(i + k + l);
			}
		}
		13.  搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬1砖,
			要求一次全搬完,问男、女和小孩各若干?
	public static void banZhuan(){
		
		for(int i = 1; i <= 9; i++){
			for(int j = 1; j <= 12; j++){
				int k = 36 - i - j;
				if(4 * i + 3 * j + k / 2 == 36 && k % 2 == 0){
					System.out.println(i + "," + j + "," + k);
				}
			}
		}
	}

3
目录,再往上一拉

17.  求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a3+ b3+ c3= abc,则abc是水仙花数
	public static void flower(){
		
		for(int i = 100; i <= 999; i++){
			int c = i % 10;
			int x = i % 100;
			int b = x / 10;
			int a = i / 100;
			if(a * a * a + b * b * b + c * c * c == i){
				System.out.println(i);
			}
		
18.  输入一个整数, 计算它各位上数字的和。(注意:是任意位的整数)
	//  除 /  取的是左边的, %  取得是右边的数字
	public static void sum_3(int n){
		int sum = 0;
		while(n != 0){
			sum += (n % 10);
			n /= 10;
		}
		System.out.println("各位数字的和" + "=" + sum);
	}

19.  如果一个数等于其所有因子之和,我们就称这个数为"完数",例如6 的因子为1,2,3,6=1+2+3,6就是一个完数.
	请编程打印出1000 以内所有的完数
	public static void wanshu(int n){
		int sum = 0;
		for(int i = 1; i <= n / 2; i++){
			if(n % i == 0){
				sum += i;
			}
		}
		if(sum == n){
			System.out.println(n + "是一个完数");
		}else{
			System.out.println(n + "不是一个完数");
		}
	}
	/*21.  计算圆周率:中国古代数学家研究出了计算圆周率最简单的办法:
	PI=4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + 4/13 - 4/15 + 4/17......这个算式的结果会无限接近于
	圆周率的值,我国古代数学家祖冲之计算出,圆周率在3.1415926和3.1415927 之间,
	请编程计算,要想得到这样的结果,
	他要经过多少次加减法运算?*/
	public static void pi(){
		double i = 1;
		double sum = 0;
		while(true){
			if(i % 2 == 0){
				sum -= 4 / (2 * i - 1);	
			}else{
				sum += 4 / (2 * i - 1);	
			}
//			System.out.println(i + "," + sum);
			if(sum >= 3.1415926 && sum <= 3.1415927){
				System.out.println(i - 1);
				break;
			}
			i++;
		}
	}
	}

4
目录,再往上一拉

/*22.  已知:faibonacci(费波那契)数列的前几个数分别为0,1,1,2,3,5……。
	从第3 项开始,每一项都等于前两项的和。读入一个整数
	n,编程求出此数列的前n 项。*/
	
	public static void faibonacci(int n){
		int a = 0,b = 1,c = 0;
		System.out.print(0 + "\t" + 1 + "\t" );
		for(int i = 0;i <= n; i++){
			c = a + b;
			a = b;
			b = c;
			System.out.print(c + "\t");
		}
	}
	/*23.  一个int 类型的整数由32 个二进制位组成,每个二进制位的值要么为0要么为1。
	要求读入一个int 类型的整数n,计算它的32 个二进
	制位中总共有多少位为1?*/
	public static void binary(int n){
		int count = 0;
		while(n != 0){
			int k = n % 2;
			if(k == 1){
				count++;
			}
			n /= 2;
		}
		System.out.println(count);
	}
	判断一个数是不是质数?
	public static boolean prime(int n){
		if(n < 2){
			return false;
		}
		if(n == 2){
			return true;
		}
		if(n % 2 == 0){
			return false;
		}
		for(int i = 2; i < n; i++){
			if(n % i == 0){
				return false;
			}
		}
		return true;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值