Java学习第四节:循环语句

举报
吴梦青 发表于 2021/11/20 06:43:19 2021/11/20
【摘要】 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...

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的范围:[ -2^31,2^31-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;//标号
						}
					}
				}
			}
		}
	}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。