on the third day
程序和用户交互Scanner类
scanner
structure 和结构
switch case 中break防止case穿透 没有break 所有case都会执行
JDK7以后支持case 字符串string 类型
java中的流程控制
-
顺序结构
System.out.println("顺序1");//顺序结构 按顺序执行 // System.out.println("顺序2"); // System.out.println("顺序3"); // System.out.println("顺序4");
-
选择结构
Scanner s = new Scanner(System.in); // String str = s.nextLine(); // if(str.equals("Hello")){ // System.out.println("进入单选择"); // // } // // if(str.equals("aa")){ // System.out.println("aa输入"); // }else{ // System.out.println("进入双选择"); // } int score = s.nextInt(); if(score==100){ System.out.println("恭喜满分"); }else if(score>100){ System.out.println("非发分数"); }else if(score>90){ System.out.println("优秀"); }else if(score>60){ System.out.println("及格"); }else { System.out.println("不及格"); } s.close(); char c = 'f'; switch (c){ case 'a': System.out.println("you"); break; case 'b': System.out.println("不好"); break; case 'c': System.out.println("ztutrue"); break;//没有break会发生case穿透现象将所有case中的判断输出 default: System.out.println("moren"); } //多选择中的switch JDK7以后支持String String str = "myname"; switch (str){ case "wang": System.out.println(8888); break; case "myname": System.out.println(99999); break; default: System.out.println("0000"); }
-
循环结构
//计算1-100的和 int i = 0;//初始化值 int sum = 0; while(i<=-100){//条件判断 sum += i;//循环体 i++;//迭代 } System.out.println("i="+i); int j =0; int sum2 = 0; do{//至少执行一次 sum2+=j; j++; }while (j<=-100);//先执行一次然后判断条件是否满足 System.out.println("j="+j);
//最重要的循环结构for
// 初始化 条件 迭代
for (int i = 0; i <= 100; i++) {
System.out.println(i);
}
System.out.println("循环结束");
//计算 0 - 100 之间奇数偶数的和
int oddSum = 0;
int evenSum = 0;
for (int j = 0; j < 100; j++) {
if (j % 2 != 0) {
oddSum += j;
} else {
evenSum += j;
}
}
System.out.println(oddSum + "(奇数)," + evenSum + "(偶数)");
/*98
99
100
循环结束
2500(奇数),2450(偶数)*/
//输出1-1000之间能被4整除的数,并且每行输出4个数
for (int i = 1; i < 1000; i++) {
if (i % 4 == 0) {
System.out.print(i + " ");
if (i % (4 * 4) == 0) {
System.out.println();
}
}
}
/*
* 4 8 12 16
20 24 28 32
36 40 44 48
52 56 60 64
* */
//打印99乘法表
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9 ...
//分析一共9行 行数为n 每行的等式为n组 n*(1~n)=
System.out.println("开始打印99乘法表");
for(int n = 1;n<=9;n++){
for(int m = 1;m<=n;m++){
System.out.print(n+" * "+m+" = "+(n*m)+" ");
}
System.out.println();
}
//死循环
// for( ; ;){
//
// }
// while(true){
// }
增强for循环
int [] aa = {0,1,3,4};
for(int x:aa){
System.out.println(x);
}
//brdak 结束当前循环 继续循环外的逻辑
int i = 0;
while (i<100){
if(i==30){
System.out.println("end");
break;
}
i++;
}
//continue 跳过当前执行,不执行下面逻辑 重新开始循环条件判断
i=0;
while (i<100){
i++;
if(i%4==0){
System.out.println(i+"能被4整除不输出");
continue;
}
System.out.println(i);
}
//打印三角形5行
// * 第n行n个*
// * *
// * * *
// * * * *
// * * * * *
for (int k = 1;k<=5;k++){
for(int a =1;a<=(5-k);a++){
System.out.print(" ");
}
for(int l=1;l<=k;l++) {
System.out.print(" *");
}
System.out.println();
}
方法的基本介绍
解决程序问题的编码
- 方法定义
- 方法重载
- 命令行传参数
- 可变参数
- 递归方法
方法保持首字母小写驼峰命名规则,保持原子性,一个方法做一件事,便于扩展
修饰符 返回值 方法名 (参数){ 方法体}
java都是值传递,有拷贝概念在里面
当方法名相同,程序根据参数个数及类型不同对应调用,称之为方法重载;
***可变参数,指定参数类型后在后面跟...为可变数量参数,此参数必须在参数的最后一位
递归
递归头,终止执行的条件,边界条件最后一步结束调用自己
递归体,执行的方法本身
public static void main(String[] args) {
int ss = jc(4);
System.out.println(ss);
}
//递归 参数基数小的时候用,开销很大,参数过大时不考虑
//阶乘1 1 1
// 2 2*1 2
// 3 3*2*1 6
// 4 4*3*2*1 24
public static int jc(int n){
if(n == 1){ //直到n到最小值1结束调用自己
return n;
}else {
return n*jc(n-1);
}
}