方法+流程控制+循环
1.1 方法
1.1.1 概述
被命名的代码块,方法可以含参数可以不含参数
可以提高代码的复用性
1.1.2 形式
修饰符 返回值 方法名(【参数】){
方法体;
}
1.1.3 练习1:方法调用
¬
1.1.4 练习2:方法参数
1.1.5 练习3:方法返回值
package cn.tedu.basic;
public class Test01 {
public static void main(String[] args) {
// 修饰符 返回值 方法名([参数]){}
System.out.println("天王盖地虎");
int c = createMeau(2);//后厨做菜------调用方法
System.out.println(c);
System.out.println("小鸡炖蘑菇");//上菜
}
public static int createMeau(int d) {
System.out.println(d);
System.out.println("好啦做菜ing~~~~~");
return 9;//哪里调用这个方法,这个值就返回到哪里
}
}
1.2 分支结构1:if
1.2.1 概述
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。
1.2.2 形式
单分支:
if(判断条件){
代码。。。
}
多分支:
if(判断条件){
代码1。。。
}else{
代码2。。。
}
嵌套分支:
if(判断条件1){
代码1。。。
}else if(条件2){
代码2。。。
} else if(判断条件3){
代码3。。。
}else{
代码4。。。
}
1.2.3 练习1:商品打折
接收用户输入的原价。满1000打9折。满2000打8折。满5000打5折。
package cn.tedu.basic;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
//接收键盘输入的价格
int oldPrice = new Scanner(System.in).nextInt();
//定义一个变量,存储打折后的价格
double newPrice = 0;
if(oldPrice>5000) {
newPrice= oldPrice*0.5;
System.out.println(newPrice);
}else if(oldPrice>2000) {
newPrice = oldPrice*0.8;
System.out.println(newPrice);
}else if(oldPrice>1000) {
newPrice = oldPrice*0.9;
System.out.println(newPrice);
}else {
System.out.println(oldPrice);
}
}
}
1.3 分支结构2:switch
1.3.1 概述
当一个case成立,从这个case向后穿透所有case,包括default,直到程序结束或者遇到break程序才结束。
1.3.2 形式
switch(expr1)中,expr1是一个整数表达式, 整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以也支持。
注意: jdk1.7以后新增 String
switch(变量或者表达式){
case 1:
case 2:
case 3:
case 4:
default:
}
1.3.3 练习1:数字匹配
1.4 循环结构1:for
1.4.1 概述
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。
它由循环体中的条件,判断继续执行某个功能还是退出循环。
根据判断条件,循环结构又可细分为先判断后执行的循环结构和先执行后判断的循环结构。
1.4.2 形式
```java
for(开始条件;循环条件;更改条件){
循环体代码…
}
1.1.1 概述
根据外层的条件,判断里层能否执行,如果能执行,就把里层代码都循环完毕后,再继续执行外层,继续判断。。
1.1.2 形式
```java
for(…){
for(…){
}
}
1.1.3 练习1:打印正方形
package cn.tedu.basic;
public class Test10 {
public static void main(String[] args) {
for (int i = 0; i < 3 ; i++) {
//外层的for循环控制行
for (int j = 0; j < 4; j++) {
//里层的for循环控制列
System.out.print("*");
}
System.out.println();
}
}
}
1.1.4 练习2:打印左直角三角形
*
**
***
****
*****
package cn.tedu.basic;
public class Test01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
pTriangle();//调用打印直角三角形的方法
}
private static void pTriangle() {
//打印直角三角形
for (int i = 0; i < 5; i++) {
/*外层循环第一次 i=0,里层for循环执行一次,
打印出来第一行的内容
外层循环第二次,i=1,里层for循环执行两次
打印出来第二行的内容
.....以此类推
2.整个方法执行完之后,外层的for循环
起始条件执行了一次,里层的for循环,起始条件
执行了5次
*/
for (int j = 0; j <=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
1.1.5 练习3:打印99乘法表
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
//99乘法表
private static void pMultiplication() {
//利用for循环嵌套,完成打印99乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
// i*j=i*j
}
System.out.println();
}
}
1.2 拓展
1.2.1 求【0,100】中,奇数的个数
1.2.2 求【0,100】中,偶数的和
1.2.3 打印右直角三角形(外层的for循环里面有两个for循环)
*
**
1.2.4 打印全三角形
*
***
1.3 break和continue
用来终止循环,可以用两种方式
1.3.1 形式
break: 中断当前循环,简单粗暴
for(){
代码1
if(条件){
代码3…
break;//如果成立,直接跳出这个for循环
}
代码2…
}
continue:跳出本次循环,进入下一轮
for(){
代码1
if(条件){
代码3…
continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
1.3.2 练习1:寻找偶数
private static void fEven() {
//寻找1到100中的偶数
for (int i = 1; i <= 100; i++) {
if(i%2==0) {
System.out.println(i);
//break; //中断本次循环
continue;//跳出当前循环
}
}
}
1.3.3 练习2:找数字8
接收用户输入的10次数字,如果不是8继续输入,找到8就返回
private static void fEight() {
for (int i = 1; i <= 10; i++) {
int a = new Scanner(System.in).nextInt();
if(a==8) {
System.out.println("在第"+i+"次,找到了8");
break;//如果找到了8,就中断
}else {
continue;//没找到8就继续,继续执行for循环
}
}
}
1.4 循环结构2:while
先判断,再执行
1.4.1 格式
while(执行条件){
代码…
}
1.4.2 练习1:获取输入的数字
一直获取用户输入的字符串,如果包含数字就把数字打出来,如果遇到exit就退出。
private static void getNumber() {
//找出一段字符串里面的数字,直到遇到exit结束
while(true) {
String str = new Scanner(System.in).nextLine();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c>='0'&&c<='9') {
System.out.println(c);
}
}
if(str.equals("exit"))break;
}
}
1.4.3 练习2:猜数字
产生一个随机数,和用户一直在输入的数字比较。
private static void guessNumber(int random) {
//将产生的随机数和用户一直输入的数比较,直到猜到了
while(true) {
int input = new Scanner(System.in).nextInt();
if(input>random) {
System.out.println("猜大了");
}else if(input<random) {
System.out.println("猜小了");
}else {
System.out.println("猜对了");
break;
//continue;
}
}
}
1.5 循环结构3:do-while
先执行,再判断
1.5.1 格式
do{
代码…
}while(执行条件);
1.5.2 练习1:获取输入的数字
private static void getNumber2() {
//找出一段字符串里面的数字
String str ;
do{
str = new Scanner(System.in).nextLine();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c>='0'&&c<='9') {
System.out.println(c);
}
}
}while(!str.equals("exit"));
}
拓展: 三种循环的区别
三种循环都可以互相代替
1、 for(){}:知道循环次数
2、 while(){}/do{}while();:当循环次数不确定时
3、 while(){} :先判断,不符合规则,不执行代码
4、 do{}while();:代码最少被执行一次,再去判断,符合规则,再次执行代码