手机网站建设与布局,电商网站开发详细流程,游戏代理怎么做,做暧暧视频网站下载目录 1. 顺序结构 2. 分支结构 2.1 if 语句 2.1.1 语法格式1 2.1.2 语法格式2 2.1.3 语法格式3 2.2 switch 语句 3. 循环结构 3.1 while循环 3.2 break与continue 3.3 for循环 4. 输入输出 4.1 输出到控制台 格式化字符串 4.2 从键盘输入 5. 练习 和C语言类似地, Java的程序逻辑… 目录 1. 顺序结构 2. 分支结构 2.1 if 语句 2.1.1 语法格式1 2.1.2 语法格式2 2.1.3 语法格式3 2.2 switch 语句 3. 循环结构 3.1 while循环 3.2 break与continue 3.3 for循环 4. 输入输出 4.1 输出到控制台 格式化字符串 4.2 从键盘输入 5. 练习 和C语言类似地, Java的程序逻辑控制也分为 顺序结构, 分支结构, 循环结构. 1. 顺序结构 顺序结构即 按照代码书写的顺序一行一行执行. System.out.println(aaa);
System.out.println(bbb);
System.out.println(ccc); 运行结果: aaa bbb ccc 如果调整代码的书写顺序, 则执行顺序也发生变化. System.out.println(aaa);
System.out.println(ccc);
System.out.println(bbb); 运行结果: aaa ccc bbb 2. 分支结构 2.1 if 语句 2.1.1 语法格式1 if (布尔表达式) {// 语句
} 如果布尔表达式结果为true执行if中的语句否则不执行。 2.1.2 语法格式2 if (布尔表达式) {// 语句1
} else {// 语句2
} 如果布尔表达式结果为true则执行if中语句否则执行else中语句。 2.1.3 语法格式3 if (布尔表达式1) {// 语句1
} else if(布尔表达式2) {// 语句2
} else {// 语句3
} 表达式1成立执行语句1否则表达式2成立执行语句2否则执行语句3. 2.2 switch 语句 在C语言中也有了解过switch的有关语法, 那么在Java中switch的使用也是几乎一样的. int a 2;
switch (a) {case 2:System.out.println(two);break;case 1:System.out.println(one);break;default:System.out.println(没有匹配);break;
} 执行流程 1. 先计算switch后()中表达式的值 2. 和case依次比较一旦有响应的匹配就执行该项下的语句直到遇到break时结束 3. 当表达式的值没有与所列项匹配时执行default 【注意事项】 多个case后的常量值不可以重复switch的括号内只能是以下类型的表达式 基本类型byte、char、short、int注意不能是long类型引用类型String常量串、枚举类型不可以是long, float, double, booleanbreak 不要遗漏, 否则会失去 多分支选择 的效果 int day 1;
switch(day) {case 1:System.out.println(星期一);// break;case 2:System.out.println(星期二);break;
} 运行结果: 星期一 星期二 switch 不能表达复杂的条件 // 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num 10 num 20) {System.out.println(hehe);
} switch 虽然支持嵌套, 但是很丑一般不推荐~ 3. 循环结构 Java中的循环结构和C语言一样, 也是三个. for, while, do while. 从使用频率上, while会比for循环使用的更多一点. 3.1 while循环 //语法格式:
while(布尔表达式){//..
} // 打印1-10之间的所有数字, 并求和
int i 1;
int sum 0;
while (i 10) {sum i;i;
}
System.out.println(sum); //1-100的和
//1-100的奇数和
//1-100的偶数和
int i 1;
int sum 0;
int sumOdd 0;
int sumEve 0;
while (i 100) {if (i % 2 0) {sumEve i;} else {sumOdd i;}sum i;i;
}
System.out.println(sum);
System.out.println(sumOdd);
System.out.println(sumEve); //计算5的阶乘
int i 1;
int ret 1;
while (i 5) {ret * i;i;
}
System.out.println(ret); //计算 1! 2! 3! 4! 5!
int ret2 0;
int n 1;
while (n 5) {int i 1;int ret 1;while (i n) {ret * i;i;}ret2 ret;n;
}
System.out.println(ret2); //死循环
int a 1;
while (true) {System.out.println(fasfa);
} 3.2 break与continue break: 直接跳出循环, 即结束循环. continue: 结束 本趟循环. //找到1-100之间
//既能被3整除, 又能被5整除的所有数字.
int i 1;
while (i 100) {if (i % 15 ! 0) {i;continue;}System.out.println(i);i;
} 3.3 for循环 //基本语法
for(表达式①;布尔表达式②;表达式③){表达式④;
} 表达式1: 用于初始化循环变量初始值设置在循环最开始时执行且只执行一次表达式2: 循环条件满则循环继续否则循环结束表达式3: 循环变量更新方式 //1. 打印 1 - 10 的数字
for (int i 1; i 10; i) {System.out.println(i);
} //2. 计算 1 - 100 的和
int sum 0;
for (int i 1; i 100; i) {
sum i;
}
System.out.println(sum sum); 执行结果: 5050 //3. 计算 5 的阶乘
int result 1;
for (int i 1; i 5; i) {result * i;
}
System.out.println(result result); //4. 计算 1! 2! 3! 4! 5!
int sum 0;
for (int i 1; i 5; i) {int tmp 1;for (int j 1; j i; j) {tmp * j;}sum tmp;
}
System.out.println(sum sum); 4. 输入输出 接下来我们来介绍一下Java中的输入输出. 这一部分并不算特别重要, 但是在后续写代码的过程中有可能会用到. 4.1 输出到控制台 有三种方式: System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出 println 输出的内容自带 \n, print 不带 \nprintf 的格式化输出方式和 C 语言的 printf 是基本一致的. 格式化字符串 转换符 类型 举例 d 十进制整数 (%d, 100) 100 x 十六进制整数 (%x, 100) 64 o 八进制整数 (%o, 100) 144 f 定点浮点数 (%f, 100f) 100.000000 e 指数浮点数 (%e, 100f) 1.000000e02 g 通用浮点数 (%g, 100f) 100.000 a 十六进制浮点数 (%a, 100) 0x1.9p6 s 字符串 (%s, 100) 100 c 字符 (%c, ‘1’) 1 b 布尔值 (%b, 100) true h 散列码 (%h, 100) 64 % 百分号 (%.2f%%, 2/7f) 0.29% 4.2 从键盘输入 在我们找工作的笔试过程中经常会需要我们自己来处理输入输出. Java中的输入需要工具类Scanner, 也就是要导入util包java.util.Scanner import java.util.Scanner; // 需要导入 util 包 类比代码int a 10;通过类型定义变量. Scanner scan new Scanner(System.in); System.in意为从键盘获取输入值. 那么接下来我们就可以通过scan这个变量通过.找到这里面要用的方法. //比如
int age sc.nextInt(); 此时代码执行就会要求读一个整数. 完整代码如下: public class Test {public static void main(String[] args) {Scanner scan new Scanner(System.in);System.out.println(输入你的年龄);int age scan.nextInt();System.out.println(年龄 age);sc.close(); // 注意, 要记得调用关闭方法}
} 使用 Scanner 循环读取 N 个数字并求取其平均值 Scanner sc new Scanner(System.in);
int sum 0;
int num 0;
while (sc.hasNextInt()) {int tmp sc.nextInt();sum tmp;num;
}
System.out.println(sum sum);
System.out.println(avg sum / num);
sc.close(); 执行结果: 10 40.0 50.5 ^Z sum 150.5 avg 30.1 注意事项: 当循环输入多个数据的时候, 使用 ctrl z 来结束输入 (Windows 上使用 ctrl z, Linux / Mac 上使用 ctrl d). 5. 练习 1. 求一个整数在内存当中存储时二进制1的个数。 让该整数的每一位和1进行按位与操作, 而要让每一位都能和1按位与, 只需使用右移操作符即可. int n -1;
int count 0;
for (int i 0; i 32; i) {if (((n i) 1) ! 0) {count;}
}
System.out.println(count); 注意: 按照以上代码完成题目, 会有一个小问题. 不管是什么数字, 都得移动31次. 从这个角度来看, 是没有必要的. 比如判断数字1它本身的二进制位1的个数, 在第一位按位与, 接下来右移之后, 会发现后面的都是0了, 就多了很多不必要的操作. 所以就有了第二种写法. int n -1;
int count 0;
while (n ! 0) {if ((n 1) ! 0) {count;}n n 1;
}
System.out.println(count); 接下来还有一个在算法层次的对代码的优化. int n -1;
int count 0;
while (n ! 0) {n n (n - 1);//每次 时都会让二进制位少一个1count;
}
System.out.println(count); 2. 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值 1. 从上述表达式可以分析出: 该表达式主要由100项基数项为正偶数项为负 2. 设置一个循环从1~100给出表达式中的每一项1.0/i { 注意此处不能使用1否则结果全部为0 } 然后使用flag标记控制奇偶项奇数项为正偶数项为负 然后将所有的项相加即可 double sum 0.0;
int flg 1;
for (int i 1; i 100; i) {sum sum 1.0 / i * flg;flg -flg;
}
System.out.println(sum); 3. 水仙花数: 求出0999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数其各位数字的立方和确好等于该数本身如 1531^35^33^3 则153是一个“水仙花数”。) public static void main(String[] args) {for (int i 1; i 999999; i) {// 1. 算是几位数 - 使用 count 存储int count 0;int tmp i; // 为了求 i 是几位数, 所以让 tmp 来辅助求位数, 而不用 iint sum 0;while (tmp ! 0) {tmp / 10;count;}//count里面就存储了当前数字i是几位数// 2. 求每一位数字是几// 3. 把每一位数字是几, 位数的次幂算出来, 求和tmp i;while (tmp ! 0) {sum Math.pow(tmp % 10, count);tmp / 10;}//sum就存储了和if (sum i) {System.out.println(i);}}} 4. 打印 X 图形 多组输入一个整数2~20表示输出的行数也表示组成“X”的反斜线和正斜线的长度。针对每行输入输出用“*”组成的X形图案。 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);while(scan.hasNextInt()) {int n scan.nextInt();for(int i 0; i n; i) {for(int j 0; j n; j) {if ((i j) || (i j n - 1)) {System.out.print(*);} else {System.out.print( );}}System.out.println();}}}
} 5. 乘法口诀表: 输出n*n的乘法口诀表n由用户输入。 for (int i 1; i 9; i) {for (int j 1; j i; j) {System.out.print(i * j i * j );}System.out.println();
} 6. 输出一个整数的每一位如123的每一位是321 int n 123;
while (n ! 0) {System.out.println(n % 10);n / 10;
} 7. 模拟登录: 编写代码模拟三次密码输入的场景。 最多能输入三次密码密码正确提示“登录成功”,密码错误 可以重新输入最多输入三次。三次均错则提示退出程序 Scanner scanner new Scanner(System.in);
int count 3;
while (count ! 0) {System.out.println(请输入你的密码共有 count 次机会);String pass scanner.nextLine();//if(pass 123) {//equalsif (pass.equals(123)) {//equalsSystem.out.println(登录成功);break;} else {System.out.println(登录失败);}count--;
} 8. 二进制序列: 获取一个数二进制序列中所有的偶数位和奇数位 分别输出二进制序列. int n 7;
for (int i 31; i 1; i - 2) {System.out.print(((n i) 1) );
}//偶数
System.out.println();
for (int i 30; i 0; i - 2) {System.out.print(((n i) 1) );
} 9. 判定一个数字是否是素数 int n 9;
int i 2;
for (; i n; i) {if (n % i 0) {System.out.println(不是素数);break;}
}
if (i n) {System.out.println(是素数!);
} 一个大于 n/2 的因数必然会有一个小于或等于 n/2 的对应因数。这是因为这个因数可以表示为 n 的另一个因数和 n/2 的乘积我们可以将 n 分为两个相等的部分其中一部分是小于或等于 n/2 的因数的倍数 int n 11;
int i 2;
for (; i n / 2; i) {if (n % i 0) {System.out.println(不是素数);break;}
}
if (i n / 2) {System.out.println(是素数!);
} int n 11;
int i 2;
for (; i Math.sqrt(n); i) {if (n % i 0) {System.out.println(不是素数);break;}
}
if (i Math.sqrt(n)) {System.out.println(是素数!);
} 10. 打印 1 - 100 之间所有的素数 for (int n 1; n 100; n) {int i 2;for (; i Math.sqrt(n); i) {if (n % i 0) {break;}}if (i Math.sqrt(n)) {System.out.println(n 是素数!);}
}