学习笔记-Java基础
Scanner:从键盘上获取不同类型的变量
- 具体实现步骤
- ①导包
import java.util.Scanner;
- ②Scanner的实例化:
Scanner scan = new Scanner(System.in);
- ③调用Scanner类的相关方法,来获取指定类型
int age = scan.nextInt();
System.out.println(age);
- 注意:需要根据指定的方法,来输入指定类型的值。如果输入的数据类型与要求的数据类型不匹配的话,会报异常:InputMismatchException
导致程序终止。
例子:
import java.util.Scanner;
class ScannerTest
{
public static void main(String args[])
{
//2.Scanner的实例化
Scanner scan = new Scanner(System.in);//从键盘输入
//3.调用Scanner类的相关方法,来获取指定类型
System.out.println("请输入你的姓名");
String name = scan.next();
System.out.println(name);//输出
System.out.println("请输入你的性别(男/女):");
String gender = scan.next();//"男"-字符串
char genderChar = gender.charAt(0);
System.out.println(genderChar);
}
}
1 顺序结构
2 分支结构
2.1 if…else结构
2.1.1 if…else结构的三种格式
- ①
if(条件表达式)
{
执行表达式1
}
例子1:
int heartBeats = 79;
if (heartBeats < 60 || heartBeats > 100)
{
System.out.println("进一步检查");
}
- ②
if(条件表达式)
{
执行表达式1
}
else
{
执行表达式2
}
例子2:
int age1 = 19;
if (age1 > 18)
{
System.out.println("你已成年");
}
else
{
System.out.println("未成年");
}
- ③
if(条件表达式)
{
执行表达式1
}
else if(条件表达式)
{
执行表达式2
}
else if(条件表达式)
{
执行表达式3
}
...
else
{
执行表达式n
}
例子3:
int age = 37;
if (age < 0)
{
System.out.println("输入不合法");
}
else if (age < 18)
{
System.out.println("青少年时期");
}
else if (age < 35)
{
System.out.println("青壮年时期");
}
else
{
System.out.println("其他时期");
}
2.1.2 if…else结构的说明
- ①当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
- ②当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓
- ③当多个条件是“包含”关系时,通常情况下,需要将范围小的声明在范围大的声明的上面。否则,范围小的就没有机会执行。
例子:
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的成绩");
int num = scan.nextInt();
if (num < 60)
{
System.out.println("无奖励");
}
else if (num <= 90)//跟下边的80 交换
{
System.out.println("一部手机");
}
else if (num <= 80)//
{
System.out.println("平板");
}
else if (num == 100)
{
System.out.println("一台车");
}
- ④当多个条件之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面
- ⑤if-else结构是可以嵌套的,if-else结构中的语句只有一条时,可以省略
2.2 switch-case结构
2.2.1 switch-case结构的格式
switch(表达式)
{
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
case 常量3:
执行语句3;
//break;
...
default:
执行语句n;
//break;
}
2.2.2 switch-case结构的说明
- ①根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应的case结构中调用其执行语句,当调用完执行语句之后,则依然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止
- ②break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
- ③switch结构中的表达式,只能是以下的6种数据类型之一:byte,short,int,char,枚举型(JDK5.0新增的),String类型(JDK7.0新增)
- ④case之后只能声明常量,不能声明范围,switch-case语句中的多个case可以合并
例子:
int score = scan.nextInt();
int i = score / 10;
switch (i)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
}
- ⑤break关键字是可选的
- ⑥defalut:相当于if-else语句中的else,default结构也是可选的
2.2.2 switch和if语句的对比
- ①if-else结构和switch-case结构在一定条件下可以互换
- ②凡是可以使用switch-case结构的,都可以转换为if-else结构
- ③既可以使用switch-case结构(同时,switch-case表达式情况不太多),又可以使用if-else结构的,优先选择switch-case结构。
原因:switch-case结构效率高
例子:
int numDay = 0;
System.out.println("请输入年份:");
int year = scan.nextInt();
System.out.println("输入月份:");
int month1 = scan.nextInt();
System.out.println("输入日:");
int day = scan.nextInt();
switch (month1)
{
case 12:
numDay += 30;
case 11:
numDay += 31;
case 10:
numDay += 30;
case 9:
numDay += 31;
case 8:
numDay += 31;
case 7:
numDay += 30;
case 6:
numDay += 31;
case 5:
numDay += 30;
case 4:
numDay += 31;
case 3:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
numDay += 29;
}
else
{
numDay += 28;
}
case 2:
numDay += 31;
case 1:
numDay += day;
}
System.out.println( "今天是" + year + "年" + month1 + "月" + day + "日" + "为当年的第" + numDay + "天");
3 循环结构
循环语句的四个组成部分
- ①初始化部分
- ②循环条件部分—boolean类型表达式
- ③循环体部分
- ④迭代部分
说明:
通常情况下,循环结束的条件是因为②中循环条件返回false了
3.1 while结构
待补充
3.2 do…while结构
待补充
3.3 for结构
- 语法格式:
for (①初始化部分;②循环条件部分 ;④迭代部分 )
{
③循环体部分
}
-
执行过程:
①—②—③—④—②—③—④—②—③—④—…—② -
说明:
- ②循环条件部分为boolean类型表达式,当值为false时,退出循环
- ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
- ④可以有多个变量更新,用逗号分隔
例子1:打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想)
int i2,sum2 = 0, account = 0;
for (i2 = 1;i2 <= 100 ;i2++ )
{
if (i2 % 7 ==0)
{
sum2 += i2;
account ++;
}
}
System.out.println("sum2= " + sum2 + ", account= " + account);
例子2:编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
其结果如下图:
int i ;
for (i = 1;i <=150 ;i++ )
{
System.out.print(i);
if (i % 3 == 0)
{
System.out.print(" foo");
}
if (i % 5 == 0)
{
System.out.print(" biz");
}
if (i % 7 == 0)
{
System.out.print(" baz");
}
System.out.println();
}