1 Java第三课[流程控制]

1.1 回顾:

1. 标识符的命名:标识符通常意义上是指 类名,包名,方法名,属性名,普通变量等等.

2. 类命名:每个单词的首字母大写;

3. 变量命名规则:字母数字下划线以及$符号组成,不能以数字开头,不能使用java中的关键字,在同一个作用域中不能重复;有一定的含义,遵循骆驼命名方法。

4. 常量: final 表示的这个变量在运行期,不会发生改变;

Final int PI=3.14; //定义一个常量,π ,值3.14

Final char SEX=’男’; //常量值

5. 数据类型:数据类型决定了一个变量在内存中存储空间的大小;常见(简单 基本)的数据类型:8个,byte,short,int,long,double,float,char,boolean ,每个类型占用的空间大小,数据值得范围: byte : -128~ 127 ;why?

00000000 -> 11111111

6. 不同的类型之间需要转换: 简单类型之间的转换,前提,要求类型要兼容; 强制转换,显式转换; -> int a =(int) 12.3; 自动转换,隐式转换; double d = 12; //12. 0 int n = (int)false;

7. 如何定义变量:

先声明,再赋值:

数据类型 变量名; // int n ; int n1,n2,n3;

变量名= 值; n = 2;

声明和赋值同时进行:

int n = 2;

int n1=1,n2,n3=2;

8. 控制台输入:

导入包:

import java.util.Scanner;

Scanner 对象名 = new Scanner(System.in);

对象名.nextInt(); 对象名.nextFloat(); 对象名.nextDouble(); 对象名.next();

如何从控制台输入一个字符?

对象名.nextChar();

9. 常见的运算符:

算术: + - * / % ,执行的是除法运算,结果是取得余数. 5%3 ->5/3

比较(关系):== != > < >= <=

赋值: = += -=等复合的赋值运算符

比较运算符: ? : ;

逗号: ,

括号: ()

1.2 课堂的默写代码:

输入两个数字,交换二者的值,并输出;

1.3 课后作业讲解:

预习作业: 引用类型,其他的运算符.

代码作业: 给一个5位数(12345),将各个位数的数字取出来,求和输出: 1+2+3+4+5的结果 15

提示:需要用到 %

12345%10 =>5

12345/10=>1234%10=>4

12345/100=>123%10=>3

packageday03;importjava.util.Scanner;public classTestHomeWork {public static voidmain(String[] args) {//TODO Auto-generated method stub

/** System.out.println(5/3); // 5/3 ->1 余数2 数学的算法: 1*3 = 3+2 = 5

* System.out.println(5%3); //2

* System.out.println(5.3/2);//如果运算符的左侧或者右侧有一个值为小数,结果为小数 2.65

* System.out.println(5.3%2); //? 2*2 -> 5.3-4= >1.3*/ Scanner input = newScanner(System.in);

System.out.println("请输入一个数字(5位数字)");int n1 =input.nextInt();//12345//将这个12345拆出来(个位 十 百 千 万)

int g = n1 % 10; //个 12345%10 => g=5

int s = n1 / 10 % 10;//十 s=12345/10=>1234%10= 4 s=4

int b = n1 / 100 % 10; //百 b =3

int q = n1 / 1000 % 10; //千 q = 2

int w = n1 / 10000; //万 w=1

int sum = g + s + b + q +w;

System.out.println(n1+ " 各个位数字的和是: " +sum);

}

}1.4 继续数据类型:

引用类型: 类 接口 枚举 注解 数组等

基本数据类型存储在栈中;引用类型存储在堆中;

• 在函数(方法)中定义的基本数据类型变量存储在栈中;

• 引用类型实例的引用(reference)也是存储在栈中;

• 引用类型实例的成员变量,存储在堆中;

String:

String str = new String(“”);

String str = “”;

1.5 其他运算符

1.5.1 ++和--:

(单目)来变量的基础上自加 1或者自减1 : a++ --a ;

无论是再前还是再后,最终的结果一定是+1或者-1;

运算符

放在变量前

放在变量后

++

++a ; 先自加,再引用a的值

a++ ; 先引用a的值,然后在自加

--

--a ; 先自减,再引用a的值

a-- ;先引用a的值,然后再自减

packageday03;public classTestOperator {public static voidmain(String[] args) {//int n = 1;//++n;//n++;//最终结果//System.out.println("n : " + n);//? 2

int n = 1;

System.out.println("n : " + n++);//? 1 输出的时候还是1, 但是输出完成了没这个n就变成了2

System.out.println("n : " + ++n);//? 3 此时是先自加2+1=>3,然后再输出

}

}

1.5.2 关于位运算符:

如何用比较快速的方法得到2的4次方? 比较经典的面试题;

结果16;

2<<3 <

十进制的2转换为二进制10 > 位运算 10000 ->变成10进制

1.5.3 逻辑运算符

思奇: 女票

长发 | 170cm

要么长发,要么170cm ,两条件都不成立,则false

不管是否长发,两个判断都要有

长发 || 170cm

要么长发,要么170cm ,两条件都不成立,则false

如果长发,则170的条件就不判断了,直接结果true ,娶了她

长发 & 170cm

长发和170要同时满足,结果才为true

&表示的非短路,长发要判断,170也要判断

长发 && 170cm

长发和170要同时满足,结果true

&&表示的短路,长发要判断如果为false,170就不判断

非 !(表达式,boolean变量) !长发

取反(!长发) ->非长头发

!true ->false

!false->true

packageday03;public classTestOperator {public static voidmain(String[] args) {//int n = 1;//++n;//n++;//最终结果//System.out.println("n : " + n);//? 2

/** int n = 1;

*

* System.out.println("n : " + n++);// ? 1 输出的时候还是1, 但是输出完成了没这个n就变成了2

* System.out.println("n : " + ++n);// ? 3 此时是先自加2+1=>3,然后再输出*/

/** int n = 2; System.out.println(2 << 3);*/

/** String fields01 = "长发飘飘"; int height = 170;

*

* // 比较的是字符串是否相同(内容是否相等) System.out.println(fields01.equals("长发飘飘") & height ==

* 170); //& 左侧为true,右侧也为true

*

* System.out.println(fields01.equals("长发") && height == 170);//&&

* 左侧为true,右侧也为true ,此时&&短路运算, 如果左侧为false,则右侧不执行*/

/** int a = 1, b = 2, c = 3; System.out.println(a++ > b++ && --b < c++);

* System.out.println("a: " + a + ", b:" + b + ",c:" + c ); // 2 3 3*/

//& 非短路的与

/*int a = 1, b = 2, c = 3;

System.out.println(a++ > b++ & --b < c++);

System.out.println("a: " + a + ", b:" + b + ",c:" + c); // 2 2 4,*/

/*int a = 1, b = 2, c = 3;

System.out.println(a++ > b++ | --b < c++);

System.out.println("a: " + a + ", b:" + b + ",c:" + c); // 2 2 4*/

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

System.out.println(a++ < b++ || --b < c++);

System.out.println("a: " + a + ", b:" + b + ",c:" + c); //2 3 3

}

}1.5.4 小题目(逻辑运算符)

String是一个引用类型的变量;

如果引用的目标为null, 那么,java中的是不允许出现对象名.属性或者方法的;

&&: 如果左侧为false,则右侧不执行; false;

& :非短路 左侧为false ,右侧要执行, s.length() ; 此时会出现错误;

1.5.5 运算符小结:

类型分: 赋值运算符(= += -= ….)/算术(+ - * / % ++ --) /逻辑(&& || ! & |)/关系(比较) (> < >= <= != ==) /位运算符(<

按照”目” :操作数 a+b => 双目/ a++ ,a – 单目/ 三目: 表达式1? 表达式2:表达式3 ;

1.5.6 课堂题目:

packageday003;/*** 练习题目讲解

*

*@authorAdministrator

**/

public classText_Ex01 {public static voidmain(String[] args) {//TODO Auto-generated method stub//显示某个10进制数字的8进制和16进制格式

int n = 12;//转换为2进制

System.out.println(Integer.toBinaryString(n));//toHexString 16进制

System.out.println(Integer.toHexString(n));//o 8进制

System.out.println(Integer.toOctalString(n));

}

}//A-65 类型转换

int n1 = 65;

System.out.println((char)n1);

题目7有些问题 :m和n是布尔类型;

System.out.println("*******************");inta, b, c, d;boolean m = true, n = true;

a= 5;

b= 6;

c= 7;

d= 8;boolean flag = (m = a++ > --b) && (n = ++c > --d);

System.out.println("flag: " + flag); //false

System.out.println("m :" + m + ", n :" + n); //false true

System.out.println("a :" + a + ", b:" + b + ",c :" + c + ",d:" +d);//6 5 7 81.5.7 运算符-优先级描述

1括号()、[]

2正负号+、-

3 自增自减,非 .++、--、!

4 乘除,取余*、/、%

5 加减+、-

6 移位运算<>、>>>

7 大小关系>、>=、

8 相等关系==、!=

9 按位与&

10 按位异或^ [^]

11 按位或|

12 逻辑与&&

13 逻辑或||

14 条件运算?:

15赋值运算=、+=、-=、*=、/=、%=

16位赋值运算&=、|=、<<=、>>=、>>>=

17逗号运算符 ,

1.6 流程控制:

1.6.1 条件结构(选择):

If[如果]结构/if-else[否则]结构:

多重if: [多种条件的判断]

嵌套的if: 表达的是一种递进的关系

If(判断语句1)

{

If(判断语句2)

{

}

}

1.6.2 多重if的课堂代码:

packageday03;importjava.util.Scanner;/*** 使用多重if实现学生成绩的判断和奖励

*

*@authorAdministrator

**/

public classTestExam {public static voidmain(String[] args) {//定义变量存储成绩

doublescore;

Scanner input= newScanner(System.in);

System.out.println("请输入成绩");

score=input.nextDouble();//90到100是一个区间,所以用&&//应用场景: 多重if适合于多个条件;只有一个条件会满足(可能一个条件都不满足,else省略的情况);else可以省略的;//是一个区间的判断;或者是某个值的判断 if(xx == yy)

if (score >= 90 && score <= 100) {

System.out.println("奖励Iphonex一部,再接再厉!");

}else if (score >= 80) {

System.out.println("奖励Ipad一部,再接再厉!");

}else if (score >= 60) {

System.out.println("奖励棒棒糖一枚,要努力咯,距离双打不远了");

}else if (score < 60 && score > 0) {

System.out.println("混合双打一顿,要努力咯~");

}else{

System.out.println("输入成绩有误,请重新输入");

}

}

}1.6.3课堂练习:1. 使用if(或者多重if,嵌套的if)完成三个数字中的最大值packageday03;importjava.util.Scanner;/*** 使用if来完成最大值的写法 不太好懂,有一定的代表意义

*

*@authorAdministrator

**/

public classTestIfMax {public static voidmain(String[] args) {//TODO Auto-generated method stub

Scanner input= newScanner(System.in);

System.out.println("请输入三个数字");int a =input.nextInt();int b =input.nextInt();int c =input.nextInt();if (a >b) {//此时a是ab中的最大值//拿a再去和c比较就可以了

if (a >c) {

System.out.println("最大值是 a :" +a);

}else{

System.out.println("最大值是c: " +c);

}

}else{//此时 b>=a//我们再拿b去和c比较就可以了

if (b >c) {

System.out.println("最大值是 b :" +b);

}else{

System.out.println("最大值是c: " +c);

}

}

}

}2. 使用多重if来计算某年中某个月份的天数(经典);

规律:给一个月份,如何来判断这个月天数?

1, 3 ,5,7,8,10,12,= >31 不管是哪一年;

4,6,9,11 =>30天,不管是哪年;

2=>29天(闰年)或者28天(平年)

判断闰年的条件:

(能被4整除,并且&& 不能被100整除); 或者(能被400整除)

packageday003;importjava.util.Scanner;/*** 规律:给一个月份,如何来判断这个月天数? 1, 3 ,5,7,8,10,12,= >31 不管是哪一年; 4,6,9,11 =>30天,不管是哪年;

* 2=>29天(闰年)或者28天(平年)

*

*

* 判断闰年的条件: (能被4整除,并且&& 不能被100整除); 或者(能被400整除)

*

*@authorAdministrator

**/

public classTest_Year_Month {public static voidmain(String[] args) {//TODO Auto-generated method stub

Scanner input= newScanner(System.in);

System.out.println("请输入年和月份");int year =input.nextInt();int month =input.nextInt();//判断月

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {

System.out.println(year+ "年的" + month + "月有: 31天");

}else if (month == 4 || month == 6 || month == 9 || month == 11) {

System.out.println(year+ "年的" + month + "月有: 30天");

}else if (month == 2) {//判断闰年的条件: (能被4整除,并且&& 不能被100整除); 或者(能被400整除)

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))

{

System.out.println(year+ "年的" + month + "月有: 29天");

}else{

System.out.println(year+ "年的" + month + "月有: 28天");

}

}

input.close();

}

}1.6.4 Switch-case:

1.6.5 Switch-case中的常量可以是哪些类型?

byte.char.short.int. String类型(jdk1.7),enum(枚举)

1.6.6 使用swtich-case 结构来实现如上练习:

packageday03;importjava.util.Scanner;public classTestSwitchCase {public static voidmain(String[] args) {//定义两个变量 分别表示年和月份

intyear, month;

Scanner input= newScanner(System.in);

System.out.println("请输入年和月份");

year=input.nextInt();

month=input.nextInt();

input.close();//判断月份

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://判断是否是闰年

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

System.out.println("天数29天");

}else{

System.out.println("天数28天");

}break;default:

System.out.println("请输入正确的月份");break;

}

}

}

packageday03;importjava.util.Scanner;/*** 考试中出现

*

*@authorAdministrator

**/

public classTestSwitchCase2 {public static voidmain(String[] args) {//① int n = 1;//② int n = 2;//③ ④ int n=5;

/** byte n = 1;

*

* //switch中的表达式可以是byte/short/int/char/enum(jdk1.5)/String(jdk1.7) // 判断月份

* switch (n) {

*

* case 1: System.out.println("1"); break; case 2: System.out.println("2");

* default: System.out.println("default"); break;

*

* }*/String str= "A";switch (str+"A") {case "A":

System.out.println("A");break;case "B":

System.out.println("B");break;default:break;

}

}

}1.6.7 Switch-case和多重if有什么异同?

两者都可以进行多个条件的判断;

语法上有不同的地方;switch-case他只能判断等值[byte short int char String[jdk1.7编译器环境下才支持] enum[枚举]]的情况;而多重if可以判断等值也可以判断区间;

1.6.8 循环结构:

解决的是重复的问题:

思奇:说的最多的话是什么? “忘了”

1.6.9 用循环来解决一些数学问题:

1+2+3+…+123:

分析: 循环要执行多少次? 123需要从1开始 2 3 ….123,我需要将每次的变量都累加起来;

1.6.1 循环结构for:

基本的for循环:

for(表达式1;表达式2;表达式3)

{

//循环体

}

packageday04;public classTestloop {public static voidmain(String[] args) {//TODO Auto-generated method stub

for (int i = 0, j = 4; i < 5; i++, j--) {

System.out.println(i+ "+" + j + "=" + (i+j)); //20?

}

}

}packageday004;importjava.util.Scanner;/*** 循环案例

*@authorAdministrator

**/

public classTest_Loop01 {public static voidmain(String[] args) {//TODO Auto-generated method stub//控制台的输入和输出//"一直"输入(数字 65-90) "一直"输出(A->Z)//一旦用户输入的值不在65-90之间,我会直接"结束"

Scanner input= newScanner(System.in);for(;;) {

System.out.println("请输入一个数字(65-90之间)");int n =input.nextInt();if (!(n >= 65 && n <= 90)) {//直接结束循环 break

System.out.println("Game Over");break;

}

System.out.println("输出结果: " + (char) n);

}//Unreachable code

input.close();

}

}

1.6.2 求100以内的偶数和 ?

1.6.3 课堂练习:

1. 求和,1+2+3+。。+100以内的奇数和;

public class TestEx01 {

public static void main(String[] args) {

// TODO Auto-generated method stub

int sum = 0;

for (int i = 1; i <= 100; i++) {

if (i % 2 == 1) {

// 要的奇数 累加

sum += i;

}

}

System.out.println("100以内奇数和: " + sum);

}

}

2. 求1+2+3…+100和,要求跳过所有的3的倍数和5的倍数;(3同时5的倍数) &&

int sum2 = 0;

for (int i = 1; i <= 100; i++) {

if (!(i % 3 == 0 && i % 5 == 0)) {

sum2 += i;

}

}

System.out.println("sum2: " + sum2);

3猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 ;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 请使用for和while分别处理;

分析: 一共吃了九天;倒着推理;

第10天早上开始: 没吃, 1

第9天早上: 没吃, (1+1)*2=>4

第8天早上开始: 没吃, (4+1)*2 =>10

第1天早上,摘了,还没吃 (?+1)*2 =>

3. 求100-1000 以内的所有的水仙花(自己去查)数有哪些?

*

*/

public class TestEx2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

for (int i = 100; i < 1000; i++) {

// 将个位 十位 百位的值 取出来 ,求三次方

int g = i % 10;

int s = i / 10 % 10;

int b = i / 100;

if (g * g * g + s * s * s + b * b * b == i) {

System.out.println("自恋数: " + i);

}

}

}

}

1.1 其他循环结构:

我们学过for循环了,我发现,循环中大概有几个重要的组成部分:

1.1.1 While循环:

先判断条件,如果条件为真,执行循环体,如果为假,跳过循环;

1.1.2 do-while循环:

package day04;

public class TestDoWhileOrWhile {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("***********while**先判断条件*********");

int i = 1;

while (i > 1) {

i++;

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

}

System.out.println("***********do-while**先执行一次再说*******");

int j = 1;

do {

j++;

System.out.println("j" + j); //2 3

} while (j > 1);

}

}

1.1.3 Foreach循环:

1.2 总结:

1. 数据类型:基本类型(栈) 和引用(引用名->栈 对象->堆)

2.运算符讲解完成:逻辑运算符,++ --(单目),了解位运算

3. 条件[分支]:if if-else if-else if-else switch-case ;多重 if 和switch-case二者区别

4. 基本的循环结构: while结构 ,do-while循环

5. 循环: for 基本语法,执行过程,基本应用

1.3 作业:

1. 课堂作业没完成的继续完成

* 自己选择使用do-while while for循环

* 从控制台接收一行字符串;

* 判断并计算出: 大写字母的个数 i ,小写字母的个数 j ,数字的个数 k ,空格的个数 x 以及其他字符z的个数分别有几个;

* 实现思路:定义几个变量分别用来计数;循环遍历我们字符串得到其中的每个字符 charAt(?) ;对字符进行判断;进行累加

*

java个十百千万位余数_1 Java第三课[流程控制]相关推荐

  1. java个十百千万位余数_java中求一个整数个十百千位的方法

    展开全部 主要的思想是先将这个整数对10求余,636f707962616964757a686964616f31333337396333得到个位数,再将整数除以10得到个位数以外的其余数(除以10之后因 ...

  2. java个十百千万位余数_第一学期四年级数学期末试题

    学习数学对于很多的同学来说是一件很痛苦的事情,今天小编就给大家来分享四年级数学,希望大家来收藏哦 四年级数学上学期期末考试题 一.填一填(18分) 1.386000是( )位数,它的最高位是( )位, ...

  3. Java学习之路 第三章 流程控制

    第三章 流程控制 1.if条件语句 (1)简单的if条件语句语法: if(条件){语句: } 注意:a.条件必须最后返回一个布尔值. (2)嵌套if语句语法: if(条件1){if(条件2){...} ...

  4. 【Java二十周年】回忆我与Java的点点滴滴

    借Java二十周年之际,静下心来思考自己与Java的故事,屡屡思绪,记忆深处关于Java的点滴回忆便一层层铺展开来. 本科--我的Java"启蒙老师" 对于计算机这个口水颇多的专业 ...

  5. java第五章循环结构总结_Java理论学习三分钟-流程控制之循环结构(3)

    一.循环结构概念引入 在生活中会出现这样的编写程序,计算1+2+3+--+100的值 int a1=1; int a2=2; int a3=3; -- int a100=100; a100=a1+a2 ...

  6. Java中的增强for循环和break continue的使用 以及流程控制训练

    增强for循环 Java5中引入的用于数组或集合的增强型for循环 声明新的局部变量,该变量的类型必须和数组 for (声明语句:表达式){ 代码句子 } 元素的类型匹配.其作用域限定在循环语句块,其 ...

  7. 判断个十百千位之后是否大于20 java——CSDN博客

    /*** * @Title: test_draw_a_lottery_or_raffle* @Description: 该方法的主要作用:输入四位数,各位数数字之和大于20 中奖,否则没中奖* @pa ...

  8. c语言编程分离个十百千位,C语言编程之|如何分离一个多位数据

    本订阅号致力于单片机.ARM等嵌入式软硬件的设计经验分享,秉承"人人都是电子设计经验的分享者"的理念,成功路上不孤单,我们一起努力.公众号:micropoint8 数码管是电子设计 ...

  9. C语言输出一个数输出它的个十百千位

    #include  <stdio.h> int main() {     int a = 0;     scanf_s("%d", &a);     int i ...

最新文章

  1. lol为什么网络连接到服务器未响应,lol登陆服务器未响应是怎么回事 解决lol登陆服务器未响应有方法...
  2. 路径规划Github库推荐
  3. [iOS] 在UIToolBar中增加UILabel等控件(xib/storyboard图形界面方式)
  4. 蓝桥杯评分标准_蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准
  5. 如何进行个人知识管理和提高自己能力?
  6. 安卓开发使用ttf文字_Android中正确使用字体图标(iconfont)的方法
  7. 中事件源previous_PM2.5传感器在扬尘监测系统中的应用
  8. 报错,could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarExc
  9. 5 加盐_洗猪肚,加盐洗就错了!加这2样,5分钟洗净,猪肚不腥不臊更入味
  10. 【MIT 6.S081】实验四:traps (实验暂停)
  11. 我的新书,《第一行代码 Android 第3版》已出版!
  12. python实现单机斗地主_用Python破解斗地主残局
  13. 穿越沙漠matlab,中国五大经典沙漠穿越
  14. 楚狂人--驱动开发基础
  15. 罗振宇跨年演讲4小时讲了啥?记住这4733字
  16. 【附源码】Python计算机毕业设计企业员工考勤管理系统
  17. springboot+小程序老年人健康保障管理系统毕业设计源码302303
  18. 毕业了,说几句真心话+献上自导自演的毕业照吧
  19. B2C购物网站常用分类目录
  20. 输出2000-3000年之间的闰年

热门文章

  1. Processor 处理器
  2. logo设计灵感的创意网站
  3. Unity 入门教程:贪吃射(1) —— Unity 安装和项目创建
  4. win怎么在计算机里按日期搜索文件,win10系统如何按指定修改日期搜索文件
  5. 深度学习 基础硬件CPU GPU知识笔记
  6. 文章收录技巧(怎么提升网站伪原创文章的收录)
  7. 国外服务器 虚拟主机,虚拟主机国内国外什么区别
  8. oppo手机投屏到电脑上
  9. 优麒麟配置java环境变量
  10. 如何免费下载qq音乐 ----ctf学习之php漏洞