千峰培训Day04-java基础学习:for语句.while语句,do-while语句

课程回顾:

程序的结构:

分支结构:

1、if-else

格式:if(boolean类型表达式){代码块}[else if(boolean型表达式){代码块}……][else{代码块}]

//注意:if(boolean类型表达式){代码块}-else if(boolean型表达式){代码块}-else{代码块}:else语句可有可不有。

2、switch

格式:switch(表达式)

{

case 常量值1:代码块;break;

……

[default :代码块;break;]

}

表达式:byte\short\char\int\enum\String

循环结构:

for语句:

格式:for(循环变量初始化;循环变量验证;循环变量值改变)

{

循环体

}

今日内容:

循环语句的分类:

1、当型

for语句

while语句

2、直到型

do/while语句

for语句:

格式:for(循环变量初始化;循环变量验证;循环变量值改变)

   {

循环体

   }

执行过程:先执行循环变量初始化,在验证循环变量,为true,则执行循环体,再执行循环变量值改变

接着验证循环变量,为true则继续

直到为false结束循环

For语句的三个表达式的省略情况:

class Test15

{

public static void main(String[] args)

{

//表达式1可以省略,但是循环变量需要提前声明并赋值

//int i=1;

/*for(;i<10;i++)

{

System.out.println(i);

}*/

//表达式3可以省略,但是循环变量的值的改变需要在循环体中进行

/*int i;

for(i=1;i<10;)

{

System.out.println(i);

i++;

}

System.out.println("循环结束之后:"+i);*/

//表达式2可以省略,但是相当于死循环,可以在循环内部使用break

/*for(int i=1;;i++)

{

System.out.println(i);

if(i==10)

{

break;

}

}*/

//for语句的三个表达式都可以省略,这时相当于死循环

//以下实现重要说10遍

int count=0;

for(int n1=1,n2=3;;n1++,n2+=n1)

{

System.out.println("我相信,我可以做到:"+n1+","+n2);

count++;

if(count==10)

{

break;

}

}

//Math.pow(a,b):计算指定数字的次幂的值,计算a的b次幂的结果

System.out.println(Math.pow(10,4));

/*

//等价于for(;;)

while(true)

{

System.out.println("我相信,我可以做到");

}*/

//System.out.println("我可以");

}

}

class Test06

{

public static void main(String[] args)

{

//控制行数的变化

for(int  i=1;i<4;i++)

{

//控制每行的*的输出,*数量最多为行数

for(int j=1;j<=i;j++)

{

System.out.print("*");//输出*

}

//该行的*输出完成之后,进行换行

System.out.println();//换行

}

System.out.println("传说中的乘法口诀:");//换行

//控制行数的变化

for(int  i=1;i<10;i++)

{

//控制每行的*的输出,*数量最多为行数

for(int j=1;j<=i;j++)

{

System.out.print(j+"*"+i+"="+i*j+"\t");//输出*

}

//该行的*输出完成之后,进行换行

System.out.println();//换行

}

}

}

//输出以下图形

*****

****

***

**

*

class Test07

{

public static void main(String[] args)

{

for(int i=5;i>0;i--)

{

for(int j=i;j>0;j--)

{

System.out.print("*");

}

System.out.println();

}

}

}

//输出以下图形

*

***

*****

*******

*********

***********

*************

***************

*****************

class Test08

{

public static void main(String[] args)

{

int maxrows=10;

//控制行数的变化

for(int i=1;i<maxrows;i++)

{

//控制空格的打印

//随着行数的增加,空格数减少

for(int j=1;j<maxrows-i;j++)

{

System.out.print(" ");//输出空格

}

//控制*的打印

//随着行数的增加,*数每次增加2个

for(int n=1;n<=2*i-1;n++)

{

System.out.print("*");//输出*

}

//换行

System.out.println();

}

}

}

//1到10的阶乘累加和为:

class Test04

{

public static void main(String[] args)

{

long sum2=0;

String res="";

for(int i=1;i<=10;i++)//控制数字递增

{

int num=1;

//获取对应数字的阶乘值

for(int j=1;j<=i;j++)

{

num*=j;

}

sum2 +=num;

res +=num;

res+="!";

System.out.println(i+"的阶乘是:"+num);

if(i!=10)

{

res +="+";

}

}

System.out.println("1到10的阶乘累加和为:"+sum2);

System.out.println(res+"="+sum2);

}

}

while语句:

格式:while(boolean型表达式)

{

循环体;

}

执行过程:

先验证表达式,如果为true就执行循环体,接着验证表达式,为true则继续

如果表达式为false那么就终止循环

class Test01

{

public static void main(String[] args)

{

int num=1;

//使用while语句输出1-10的数字

while(num<11)

{

System.out.println(num);

num++;

}

//等同于上述代码,都是输出1-10的数字

int n=0;

while((++n)<11)

{

System.out.println(n);

}

//练习,请输出10-20的数字,要求倒序输出

//练习:使用while循环输出100以内的:1,4,7,10,13……,要求每行5个

}

}

class Test02

{

public static void main(String[] args)

{

//倒序输出

int num=20;

while(num>9)

{

System.out.println(num);

num--;

}

int n=1;//符合要求的数字

int count=0;//记录当前是第几个数字

while(n<101)//100以内的数字

{

System.out.print(n+"\t");

n+=3;//每次增加3

count++;//累加计算第几个数字

if(count%5==0)//如果当前的个数为5的倍数就换行

{

System.out.println();//换行

}

}

}

}

class Test03

{

/*

有一根绳子总长1000米,每天剪断一半,问多少天绳子小于5米(不考虑小数)

*/

public static void main(String[] args)

{

int length=1000,day=0;

while(length>=5)//只要绳子大于等于5米,那么就可以剪断

{

length/=2;//剪断一半

day++;//累加计算天

}

System.out.println(day);

}

}

do/while语句:

格式:do{

循环体

}while(boolean型表达式);

执行过程:程序先执行循环体再进行表达式验证,如果为true则继续执行循环体,再验证表达式

直到表达式为false就结束循环

class Test05 //使用do/while实现20以内的偶数的和

{

public static void main(String[] args)

{

int num=0,sum=0;

double sum2=1;

do{

if(num%2==0)

{

sum+=num;

}

num++;

sum2*=num;

}while(num<21);

System.out.println("20以内的偶数的值:"+sum+",20的阶乘:"+sum2);

}

}

 

for:确定循环次数

while:不确定循环次数

do/while:要求循环体先执行

 

循环的嵌套:循环语句中可以再使用循环

在使用循环嵌套的时候,一定要理清思路,最好能够搞明白执行过程

 

 

特殊的循环控制:

break:结束循环(最近的)

continue:跳过/结束 某一次的循环

return:结束循环(所有循环)

标签:java允许对某行代码加上标记

格式:标识符 : 代码

可以和break一起使用,用来结束指定的循环

 

自己动手结合标签和continue使用,观察效果

class Test11

{

public static void main(String[] args)

{

for(int i=1;i<10;i++)

{

if(i==6)//如果为6

{

//continue;//跳过/结束 本次循环

break;//结束循环

}

//continue;

//break;

System.out.println(i);

}

//System.out.println("Hello World!");

}

}

/////

class Test13

{

public static void main(String[] args)

{

//对指定的循环加上标签/标记

outer:for(int i=1;i<5;i++)

{

for(int j=10;j<15;j++)

{

System.out.println(i+","+j);

if(j==12)

{

//break outer;//结束循环,结束指定标签的循环

//return;//等价于上述代码

//break;//结束当前的内循环

continue outer;//结束外层的本次循环

}

}

System.out.println(i);

}

}

}

public class Test14

{

/*计算素数*/

public static void main(String[] args)

{

//输出10以内的素数

/*

for(int i=2;i<101;i++)

{

boolean res=true;//记录当前数字是否为素数

for(int j=2;j<=i/2;j++)//循环验证是否还有其他约数

{

if(i%j==0)//是否可以被整除

{

res=false;//修改标识,

break;

}

}

if(res)

{

System.out.println(i);

}

}*/

outer:for(int i=2;i<11;i++)

{

for(int j=2;j<=i/2;j++)

{

if(i%j==0)

{

continue outer;

}

}

System.out.println(i);

}

}

}

//欢迎玩我们的数字求和小游戏

import java.util.Scanner;

public class Geam01

{

public static void main(String[] args)

{

System.out.println("欢迎玩我们的数字求和小游戏");

int base,count;//声明变量,分别用于记录输入的基数和个数

char isQuit;//记录是否退出,Y代表退出

Scanner sc=new Scanner(System.in);//创建键盘输入对象,

用于读取用于输入的数据

while(true)

{

System.out.println("请输入基数:");

base=sc.nextInt();//获取用户输入的基数

System.out.println("请输入个数:");

count=sc.nextInt();//获取用户输入的个数

String res="";//创建字符串变量,用于记录表达式

long sum=0;//记录总和

//循环个数

for(int i=1;i<=count;i++)

{

long num=0,pow=1;//创建变量,记录每个数

字,和倍数

//循环计算数字

for(int j=1;j<=i;j++)

{

num+=base*pow;//累加计算数字

pow*=10;//倍数是以10倍进行递增

}

sum+=num;//计算和

res+=num;//记录表达式

//如果不是最后一位数字,我们就加上+

if(i!=count)

{

res+="+";

}

}

System.out.println("您本次输入的基数:"+

base+"个数:"+count+

",结果为:"+res+"="+sum);

System.out.println("请选择:退出(Y),,继续请输

入其他");

isQuit=sc.next().charAt(0);//获取用户输入的字符

if(isQuit==‘Y‘)//如果输入的是结束指令,那么就结

束循环

{

System.out.println("期待下次与你重逢");

break;//结束循环

}

}

}

}

面试:

跳过/跳出 本次/某次 循环---continue

结束/跳出 整个/全部 循环---break

素数(质数):只能被1和本身整除的数

练习:计算10以内的素数

步骤:

1、获取1-10的数字

2、验证每个数字是否为素数

素数的验证:当前的数字只能被1和本身整除

可以通过验证数字能否被其他数字整除

特殊的for循环:

1、表达式1可以省略,但是循环变量需要提前声明并赋值

2、表达式3可以省略,但是循环变量的值的改变需要在循环体中进行

3、表达式2可以省略,但是相当于死循环,可以在循环内部使用break

4、for语句的三个表达式都可以省略,这时相当于死循环

5、表达式1和表达式3可以使用,表达式,可以达到声明多个变量,或操作多个变量的值

例如:

for(int n1=0,n2=1;;n1+=2,n2+=n1)

{

}

循环的总结:

对同一问题,可以使用3种循环

一般来说,确定循环次数或者明确给出循环条件的,我们使用for语句

如果没有明确的循环次数一般选择while

如果要求必须先执行循环体那么我们选择do/while

切记:要避免死循环

小游戏:

2+22+222+2222

基数:2

个数:4

用户输入基数和个数,程序输出对应的结果:

2+22+222+2222=值

询问用户是否结束,如果继续,那么就继续

例如:基数输入:3,个数输入2

3+33

//Math.pow(a,b):计算指定数字的次幂的值,计算a的b次幂的结果

System.out.println(Math.pow(10,4));

步骤:

1、循环获取指定个数的数字

2、计算出每个数字

2=2

22=2+20

222=2+20+200

2222=2+20+200+2000

3、求和

行数 *数

* 1 1 1-1

** 2 2 1-2

*** 3 3 1-3

**** 4 4 1-4

***** 5 5 1-5

*****

****

***

**

*

行数 *数 空格数

* 1 1 3

*** 2 3 2

***** 3 5 1

******* 4 7 0

**********

*******

*****

***

*

有一根绳子总长1000米,每天剪断一半,问多少天绳子小于5米(不考虑小数)

练习:求1+2!+3!+...+10!的和(注意用long计算)

注:3!=1*2*3

步骤:

1、循环获取1-10的数字

2、分别计算每个数字的阶乘(循环计算)

图、画图1、for的执行过程

2、for嵌套的执行过程

3、do/while的执行过程

2:打印

*   行数1  星数1 空格4

**   2      2     3

***   3      3     2

****   4      4     1

*****   5      5     0

//

class zuoye02

{

public static void main(String[] args)

{

//用于控制行数

for(int i=1;i<=5;i++)

{

for(int j = 1;j<=5-i;j++)

{

System.out.print(" ");

}

for(int k =1;k<=i;k++)

{

System.out.print("*");

}

System.out.println();

}

}

}

3:

$$$$$$$$$$$

$$$$$$$$$

$$$$$$$

$$$$$

$$$

$

$$$

$$$$$

$$$$$$$

$$$$$$$$$

$$$$$$$$$$$$

class zuoye03

{

public static void main(String[] args)

{

for(int i=1;i<=6;i++)//控制行数

{

for(int k=1;k<i;k++)

{

System.out.print(" ");

}

for(int j=11;j>2*i-2;j--)

{

System.out.print("$");

}

System.out.println();

}

for(int t=1;t<=5;t++)//控制行数

{

for(int k=4;k>t-1;k--)

{

System.out.print(" ");

}

for(int j=1;j<=2*t+1;j++)

{

System.out.print("$");

}

System.out.println();

}

}

}

class  zuoye033

{

public static void main(String[] args)

{

for(int i =1;i<=11;i++)

{

for(int j=1;j<6-Math.abs(6-i);j++)

{

System.out.print(" ");

}

for(int j=1;j<=2*Math.abs(6-i)+1;j++)

{

System.out.print("$");

}

System.out.println();

}

}

}

4:

*

*  *

*  *  *

*  *  *  *

*  *  *  *  *

*  *  *  *  *  *

*  *  *  *  *  *  *

*  *  *  *  *  *  *  *

*  *  *  *  *  *  *  *  *

*  *  *  *  *  *  *  *

*  *  *  *  *  *  *

*  *  *  *  *  *

*  *  *  *  *

*  *  *  *

*  *  *

*  *

*

*

自己发现,规律去实现

class  zuoye04

{

public static void main(String[] args)

{

for(int i=1;i<=17;i++)

{

for(int j=1;j<=9-Math.abs(9-i);j++ )

{

System.out.print("*");

System.out.print("  ");

}

System.out.println();

}

}

}

5、计算:求1-3+5-7+ …… -99+101的值。

class zuoye05

{

public static void main(String[] args)

{

int sum=0;

int flag=1;

for(int i=1;i<=101;i+=2)

{

sum +=i*flag;

flag*=-1;

}

System.out.println(sum);

}

}

6、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。(不考虑小数)

a:2

b:1

1:2/1

2:3/2

3:5/3

4:8/5

a/b

(a+b)/a

2/1,3/2,5/3,8/5,

/**

int a=2,b=1;

int sum=0;

for(int i=1;i<=20;i++)

{

sum +=a/b;

a = a+b;

b = a-b;

}

System.out.println("有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和:"+sum);

*/

double sum=0;

int cnt=20;

int a=2,b=1,c=0;

while((cnt--)>0){

sum+=(double)a/b;

a=a+b;

b=a-b; //b存储原来的a

}

System.out.println(sum);

7、水仙花数:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,

其各个数字立方和等于该数本身。

例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 //java.lang.Math.pow()

int c=0,d=0,e=0;

for(int j=100;j<1000;j++)

{

c = j/100;

d = j/10%10;

e = j%10;

if(j== c*c*c+d*d*d+e*e*e)

{

System.out.println("水仙花数为:"+j);

}

}

时间: 2024-10-09 12:44:38

千峰培训Day04-java基础学习:for语句.while语句,do-while语句的相关文章

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

Java基础学习--抽象类与抽象函数

Java基础学习--抽象类与抽象函数 abstract class 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象: 抽象类中的抽象函数没有函数体,例如:public abstract void move(); 一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的. 抽象类中所有的的抽象函数必需子类的覆盖,而非抽象函数不需要覆盖.因为子类会继承父类的函数,如果不去覆盖继承来的抽象函数,那么子类就含有抽象函数,含有抽象函数的类必须要声明为抽象类.

JAVA基础学习笔记(1)

今天第一天开始学JAVA,时间:2014年6月17日 学习内容:1.java环境的架设 2.JAVA基本数据类型 1.JAVA环境的架设       1.要先去下载JDK,下载地址 2.安装完成后,设置环境变量 1.1环境变量的设置        1.右键-我的电脑-属性-高级-环境变量-系统变量,找到PATH,在里面加入jdk里bin目录的地址 如:c:\java\bin; 2.新建-名为classpath,值为. 1.2测试JAVA是否配置正确        1.在cmd里面输入javac.

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

java基础学习笔记day01

java基础学习笔记day01 1.软件开发: 软件:按照特定顺序组织的计算机数据和指令的集合 开发:软件的制作过程 软件开发:借助开发工具和计算机语言制作软件 2.java概述: java之父:詹姆斯·高斯林 JDK:java开发环境 jre:java运行环境 JVM:java虚拟机 java跨平台是因为,JVM能在不同的平台运行,JVM是跨平台的 JavaSE:标准版 JavaME:手机端,物联网 JavaEE:企业版,互联网项目 3.java语言特点: 简单性 解释性 面向对象 高性能 分

Java基础学习1-Java标识符及基本类型

暑假闲来无事,重新学习Java,希望能够加深自己对Java的理解与深入. 第一天,从Java标识符开始. Java标识符的命名规则 - 标识符必须以字母.下划线.美元符$开头. - 标识符其它部分可以是字母.下划线.美元符$和数字的任意组合. - Java标识符的大小写敏感,无长度限制(但是也不要太长,会变成裹脚布的(/ □ \)). - 不可以是Java的关键字(这点只要是有点基础的都会知道啦,Java的关键字还挺多的哦,小心踩到地雷呀). 下面是一个小栗子. /* *测试标识符的写法 */

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的

java基础学习总结——java环境变量配置(转)

java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME”."path”."classpath"这三个环境变量才能够把java的开发环境 搭建好.在没安装过jdk的环境下,path环境变量是系统变量,本来存在的,而JAVA_HOME和classpath是不存在的. 一.配置JAVA_HOME变量 操作步骤(win7系统):计算机→右键“属性”→高

java基础学习-变量&运算

package com.J; public class java { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub float a=1.11111111111111f;    // 数据表示单精度末尾+"f",此处数据存储要溢出 double b=1.1111111111111111;  // java里面默认小数都为double双精度浮点