顺序控制(if)
- 单分支
if(条件表达式){
执行代码块;(可以有多条语句)
}
- 双分支
if(条件表达式){
执行代码块1;(可以有多条语句)
} else {
执行代码块2;(可以有多条语句)
}
- 分支控制if-else
if(条件表达式1){
执行代码块1;(可以有多条语句)
} else if(条件表达式2){
执行代码块2;(可以有多条语句)
}
....
else{
执行代码块n;(可以有多条语句)
}
- 嵌套分支
if(){
if(){
//if-else...
}else{
//if-else
}
}
switch分支结构
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
break;
default:
default语句块;
break;
}
- 解读
(1)switch关键字,表示switch分支;
(2)表达式对应于一个值,变量,比如num;
(3)break:表示退出switch,若没有break,则一直执行后面的语句块;
(6)如果一个都没有匹配上,就执行default语句块。 - 注意事项及细节
(1)表达式数据类型,应和 case 后的常量类型一致,或者是可以自动转为可以相互比较的类型,比如输入的是字符,而变量是 int 。
(2)switch(表达式)中表达式的返回值必须是:(byte、short、int、char、enum[枚举]、String)。
(3)case子句中的值必须是常量,而不能是变量。
(4)default子句是可选的,当没有匹配的case时,执行default。
(5)break语句是用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break。
for循环
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
while循环
循环变量初始化;
while(循环条件){
循环体(语句);
循环变量迭代;
}
do while循环
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
注意最后有一个分号
空心金字塔
- 我写的
class Star {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入层数:");
int totalLevel = scanner.nextInt();
int i = 1,j;
while(i <= totalLevel){
j = 1;
while(j <= totalLevel+i-1){
if( j == totalLevel-(i-1) || j == totalLevel+(i-1) || i == totalLevel){
System.out.print("*");
} else {
System.out.print(" ");
}
j++;
}
System.out.print("\n");
i++;
}
}
}
- 老师写的
import java.util.Scanner;
public class PracticeLoop03{
public static void main(String[] args) {
Scanner myscanner = new Scanner(System.in);
System.out.println("请输入行数:");
int num = myscanner.nextInt();
for (int i = 1;i <= num;i++) {
for (int k = 1; k <= num - i;k++) {
System.out.print(" ");
}
for (int j =1;j <= 2 * i - 1;j++) {
if (j == 1 || j == 2 * i -1 || i == num) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println("");
}
}
}
break和continue和return(跳转控制)
- break语句用于终止某个语句块的执行,一般使用在switch或者循环[for,while,do-while]中。
- continue语句用于结束本次循环,据徐执行下一次循环;
- return使用在方法,表示跳出所在的方法
随机数
1、输出[0.0 , 1.0)之间的随机数
Math.random()
2、输出[1,100]之间的随机数
(int)(Math.random() * 100 ) + 1
3、判断字符串内容是否相等
String name = "贾宝玉";
System.out.println(name.equals("林黛玉"));
System.out.println("林黛玉".equals(name));
//两种写法都可,更推荐第二种,避免空指针。
结果输出false。
第四章作业
水仙花数
- 输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要判断的整数:");
int num = scanner.nextInt();
- 我写的
int i,j,sum=0;
int temp = num;
for(i=1;i<=3;i++){
j = temp % 10;
sum += j*j*j;
temp = temp/10;
}
if(sum == num){
System.out.println("是水仙花数");
} else {
System.out.println("不是水仙花数");
}
- 老师写的
int n1 = num/100; //百位
int n2 = num%100/10; //十位
int n3 = num% 10; //个位
if(n1*n1*n1 + n2*n2*n2 + n3*n3*n3 == num){
System.out.println("是水仙花数");
} else {
System.out.println("不是水仙花数");
}
第六题
【题目】输出1-100之间不能被5整除的数,每5个一行
思路:使用count来统计输出的个数。
count % 5 == 0 则说明现在个数是五的整数倍,可以换行
int i ,count=0 ;
for(i = 1 ; i <= 100; i++){
if(i % 5 != 0){
System.out.print(i + " ");
count++;
/* 我写的
if(count==5){
System.out.println("");
count=0;
}
*/
//老师写的
if(count % 5 == 0){
System.out.println("");
}
}
}
第七题
【题目】输出小写的a-z和大写的Z-A
思路:‘b’ = ‘a’ + 1,递增可以用for控制
for(char c1 = 'a' ; c1 <= 'z' ; c1++){
System.out.print(c1 + " ");
}
System.out.println("");
for(char c2 = 'Z' ; c2 >= 'A'; c2--){
System.out.print(c2 + " ");
}
第八题
【题目】求1-1/2+1/3-1/4+…+1/100
注意:
- 涉及到除法取余的一般要用double变量,而不是int
- 1/2 != 0.5, 在编程语言中等于0!!!所以一定要把分子或分母其中一个写成double形式。
思路:判断奇偶
- 偶数:i % 2 == 0(不是除法不是除法不是除法,4/2 == 2)
- 奇数:i % 2 != 0
int i;
double sum = 0;
for(i=1;i<=100;i++){
if(i % 2 == 0){
sum -= 1.0/i; //不能写成1/i
} else {
sum += 1.0/i;
}
}
System.out.println(sum);
第九题
【题目】求1+(1+2)+(1+2+3)+…+(1+2+3+…+100)
int sum=0,i;
for(i=1;i<=100;i++){
sum += i * (101-i);
}
System.out.println(sum);