Java学习第四节循环语句

do while 循环:先做一次循环,再判断条件。
注意:while语句后必须加分号

计算位数

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		int balance = 0;
			Scanner in=new Scanner(System.in);
			int number=in.nextInt();
			int count=0;
			do
			{
					number=number/10;
					count++;
			} while(number>0);
			System.out.println(count);
	}
}

计算平均数

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
			Scanner in= new Scanner(System.in);
			int number;
			int sum=0;
			int count=0;
			number=in.nextInt();
			while(number!=-1)
			{
				sum=sum+number;
				count=count+1;
				number=in.nextInt();
			}
			if(count>0)
			{
				System.out.println((double)sum/count);
			}
			
	}
}

do while

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
			Scanner in= new Scanner(System.in);
			int number=0;
			int sum=0;
			int count=0;
			do
			{
				number=in.nextInt();
				if(number!=-1)
				{
					sum=sum+number;
					count=count+1;
				}
				
				
			} while(number!=-1);
			if(count>0)
			{
				System.out.println((double)sum/count);
			}
			
	}
}

猜数游戏

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		int number=(int)(Math.random()*100+1);
		//math.random生成[0,1)
		//math.random*100==>[0,100)
		//math.random*100+1==>[1,101)==>[1,100]
		//math.random()是浮点数,要做类型转换
		int _input;//用户输入的数字
		int count=0;//记录用户猜了几次		
		do
		{
			_input=in.nextInt();
			count++;
			if(_input>number)
				System.out.println("大");
			else if(_input<number)
				System.out.println("小");
		} while(_input!=number); 
		System.out.println(count);
	}
}

三位数的数位分离

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		//先不考虑while还是do while,先考虑循环里的东西。
		int number=in.nextInt();
		do {
			int digit=number%10;
			System.out.print(digit+" ");
			number=number/10;
		} while(number>0);
		System.out.println();//输出空行
	}
}

for 循环

阶乘:

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		int n=in.nextInt();
		int i=1;//中间变量
		int factor=1;
		while(i<=n)
		{
			factor=factor*i;
			i++;
		}
		System.out.println(factor);
	}
}

结果:输入20的时候是一个负值。
int的范围:[ -231,231-1 ]
20 ! 大于int的范围

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		int n=in.nextInt();

		int factor=1;

		for(int i=1/*初始化*/;i<=n/*循环执行的条件*/;i++/*循环体*/)//这样定义i只存在for循坏内部
		{
			factor=factor*i;
		}
		System.out.println(factor);
	}
}

for循环:
for(初始动作;条件:每轮的动作)
{
for中的每一个表达式都是可以省略的
}
for(;条件;)=while(条件)
空循环:for(初始动作;条件:每轮的动作)
Tips for loops

  • 有固定次数:for
  • 必须执行一次:do while
  • 其他情况
    复合赋值
		a+=1;等价于a=a+1;
		a-=1;等价于a=-1;
		a*=1;等价于a=a*1;
		a/=1;等价于a=a/1;
		a*=b+1;等价于a=a*(b+1);
		a/=b+1;等价于a=a/(b+1);
		i++;先赋值后加一
		++i;先加一后赋值

素数

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		int n=in.nextInt();
		int isPrime=1;
		for(int i=3;i<n;i++)
		{
			if(n%i==0)
			{
				isPrime=0;
				System.out.println(n+"不是素数");
				break;
			}
		}
		if(isPrime==1)
		{
			System.out.println(n+"是素数");
		}
	}
}

break:跳出循环
countinue:跳出本次循环

System.out.println();//每次输出后都换行
System.out.print();//每次输出后不换行

循环嵌套

输出100以内的素数

package input;
import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
		for(int n=2;n<100;n++)
		{
			int isPrime=1;
			for(int i=2;i<n;i++)
			{
				if(n%i==0)
				{
					isPrime=0;
					break;
				}
			}
			if(isPrime==1)
			{
				System.out.print(n+" ");
			}
		}
	}
}

组合

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {

		Scanner in= new Scanner(System.in);
		int amount=in.nextInt();
		for(int one=0;one<=amount;++one) {
			for(int five=0;five<=amount/5;++five) {
				for(int ten=0;ten<=amount/10;++ten) {
					for(int twenty=0;twenty<=amount/20;++twenty) {
						if(one+five*5+ten*10+twenty*20==amount) {
							System.out.println(one+"张1一元"+five+"张5元"+ten+"张10元"+twenty+"张20元");
						}
					}
				}
			}
		}
		
		
	}
}

标号:循环外添加一个标号,和里面的循环对应,可以直接break那几层循环或countinue,这个“标号”是c语言里没有的。这个“标号”的名字是可以自己随便写的

package input;

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
		int amount=in.nextInt();
		OUT://标号
		for(int one=0;one<=amount;++one) {
			for(int five=0;five<=amount/5;++five) {
				for(int ten=0;ten<=amount/10;++ten) {
					for(int twenty=0;twenty<=amount/20;++twenty) {
						if(one+five*5+ten*10+twenty*20==amount) {
							System.out.println(one+"张1一元"+five+"张5元"+ten+"张10元"+twenty+"张20元");
							break OUT;//标号
						}
					}
				}
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值