一、从键盘输入(Scanner类):
如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner in=new Scanner(System.in);
3.调用Scanner类的相关方法(next/nextXxx),来获取指定类型的变量。
注意:
需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与
要求的数据类型不匹配时,会报InputNisMatchException异常,导致程序终止。
package cn.edu.bzu;
import java.util.Scanner;
//如何从键盘获取不同类型的变量:需要使用Scanner类
//
//具体实现步骤:
// 1.导包:import java.util.Scanner;
// 2.Scanner的实例化:Scanner in=new Scanner(System.in);
// 3.调用Scanner类的相关方法(next/nextXxx),来获取指定类型的变量。
//
//注意:
// 需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与
//要求的数据类型不匹配时,会报InputNisMatchException异常,导致程序终止。
public class Test00 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
//获取int型的值
System.out.println("请输入int型的数值:");
int num=in.nextInt();
System.out.println("输出:"+num);
//获取double型的值
System.out.println("请输入double型的数值:");
double num1=in.nextDouble();//输入2
System.out.println("输出:"+num1);//2.0
}
}
二、if–else:
if-else试题1:
if-else试题2:
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入岳小鹏期末考试成绩(0--100):");
int score=scan.nextInt();
if(score==100)
System.out.println("奖励一辆BMW.");
else if(score>80)
System.out.println("奖励一台iphone xs max.");
else if(score>=60)
System.out.println("奖励一个ipad.");
else
System.out.println("成绩未达标,无奖励.");
}
}
注意:执行完if或者else if中的一个后直接就退出,和不带break的switch语句不同(不带break的switch语句会依次向下执行)。
运行结果:
请输入岳小鹏期末考试成绩(0--100):
88
奖励一台iphone xs max.
if-else试题3:(将上面的>=60的和>80的两个互换位置)
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入岳小鹏期末考试成绩(0--100):");
int score=scan.nextInt();
if(score==100)
System.out.println("奖励一辆BMW.");
else if(score>=60)
System.out.println("奖励一个ipad.");
else if(score>80)
System.out.println("奖励一台iphone xs max.");
else
System.out.println("成绩未达标,无奖励.");
//如果输入88: if-else试题1中会执行“>80“后的语句;而if-else试题2中会执行>=60后的语句。
}
}
运行结果:
请输入岳小鹏期末考试成绩(0--100):
88
奖励一个ipad.
说明:
1.else结构是可选的。
2.针对于条件表达式:
>如果多个条件之间是互斥关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
>如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
>如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行。(如if-else试题2中将>=60的放在>80的上面就不可取)。
代码:
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1=scan.nextInt();
System.out.println("请输入第二个整数:");
int num2=scan.nextInt();
System.out.println("请输入第三个整数:");
int num3=scan.nextInt();
if(num1>num2) {
if(num3>num1) //新出现的大于之前两者比较最大的
System.out.println(num2+" "+num1+" num3");
else if(num3<num2) //新出现的小于之前两者比较最小的
System.out.println(num3+" "+num2+" "+num1);
else //新出现的介于之前两者中间
System.out.println(num2+" "+num3+" "+num1);
}else {
if(num3>num2) //新出现的大于之前两者比较最大的
System.out.println(num1+" "+num2+" "+num3);
else if(num3<num1) //新出现的小于之前两者比较最小的
System.out.println(num3+" "+num1+" "+num2);
else //新出现的介于之前两者中间
System.out.println(num1+" "+num3+" "+num2);
}
}
}
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
int x=4;
int y=1;
if(x>2)
if(y>2)
System.out.println(x+y);
else //else与最近的且未配对的if配对
System.out.println("x is "+x);
}
}
T3:
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
int dogAge=6;
if(dogAge>=0 && dogAge<=2)
System.out.println("相当于人的年龄:"+dogAge*10.5);
else if(dogAge>2)
System.out.println("相当于人的年龄:"+(2*10.5+(dogAge-2)*4));
else
System.out.println("狗狗还没有出生呢!");
}
}
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
//如何获取一个随机数:10 - 99
double value=Math.random()*90+10; //[0.0,1.0) --> [10.0,100.0) --> [10,99)
System.out.println(value);
//公式:[a,b] :(int)(Math.random()*(b-a+1)) +a;
}
}
代码一:
package cn.edu.bzu;
import java.util.Scanner;
public class Test00 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入您的身高(cm):");
int height=scan.nextInt();
System.out.println("请输入您的财富(千万):" );
double wealth=scan.nextDouble();
System.out.println("请确认自己是否帅(true/false):");
boolean isHandsome=scan.nextBoolean();
if(height >=180 && wealth>=1 && isHandsome)
System.out.println("我一定要嫁给他!");
else if(height>=180 || wealth >=1 || isHandsome)
System.out.println("可以考虑嫁给!");
else
System.out.println("不嫁");
}
}
代码二:如果 “帅不帅” 用String类型的话,在判断时需要使用 “String类型.equals(“是”)“方法。
三、switch - case:
说明:
(1)、根据switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
当调用完执行语句以后,则仍然继续往下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
末尾结束为止。
(2)、break可以使用在循环语句和switch语句中,表示一旦执行到此关键字,就跳出switch-case结构
(3)、switch-case中的表达式只能是如下6种数据类型之一 :
byte、short、char、int、枚举类型、String
(4)、case之后只能声明常量。不能声明范围。
(5)、break关键字是可选的。
(6)、default相当于if-else结构中的else,
default结构是可选的,而且位置是灵活的。(如果default放在最开头,会先执行后面的case,如果case没有满足条件能执行的,再回过来执行default,知道遇到break才会再退出)
package cn.edu.bzu;
import java.util.Scanner;
//说明:
// (1)、根据switch表达式的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
// 当调用完执行语句以后,则仍然继续往下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
// 末尾结束为止。
// (2)、break可以使用在循环语句和switch语句中,表示一旦执行到此关键字,就跳出switch-case结构
// (3)、switch-case中的表达式只能是如下6种数据类型之一 :
// byte、short、char、int、枚举类型、String
// (4)、case之后只能声明常量。不能声明范围。
// (5)、break关键字是可选的。
// (6)、default相当于if-else结构中的else,
// default结构是可选的,而且位置是灵活的。(如果default放在最开头,会先执行后面的case,如果case没有满足条件能执行的,再回过来执行default,知道遇到break才会再退出)
public class Test01 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("请输入您心中的数字:");
int num=s.nextInt();
//int num=2;
switch(num) {
case 0:
System.out.println("zero");
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
default:
System.out.println("over");
}
// 结果:因为没加break;
// two
// three
// over
}
}
例题:
package cn.edu.bzu;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入year:");
int year=scan.nextInt();
System.out.println("请输入month:");
int month=scan.nextInt();
System.out.println("请输入day:");
int day=scan.nextInt();
//d定义一个变量来保存总天数
int sumDay=0;
switch(month) {
case 12:
sumDay += 30;
case 11:
sumDay += 31;
case 10:
sumDay += 30;
case 9:
sumDay += 31;
case 8:
sumDay += 31;
case 7:
sumDay += 30;
case 6:
sumDay += 31;
case 5:
sumDay += 30;
case 4:
sumDay += 31;
case 3:
if(month %4==0 && month%100==0 || month%400==0)
sumDay += 29;
else
sumDay += 28;
case 2:
sumDay += 31;
case 1:
sumDay+=day;
}
System.out.println("该日期是"+year+"年的第"+sumDay+"天");
}
}
四、循环结构:
注意:循环条件必须是boolean类型。
package cn.edu.bzu;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
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();
}
}
}
五、习题:
1.switch后面使用的表达式可以是哪些数据类型的。
byte 、 short 、char 、int 、枚举类型变量、String类型。
2. 使用switch语句改写下列if语句:
int a = 3;
int x = 100;
if(a==1)
x+=5;
else if(a==2)
x+=10;
else if(a==3)
x+=16;
else
x+=34;
改:
int a = 3;
int x = 100;
switch(a){
case 1:
x+=5;
break;
case 2:
x+=10;
break;
case 3:
x+=16;
break;
default:
x+=34;
//break;
}
3. 谈谈你对三元运算符、if-else和switch-case结构使用场景的理解
int c;
if(a != b){
c = a;
}else{
c = b;
}
int c = (a != b)? a : b;
int c = a;
4. 如何从控制台获取String和int型的变量,并输出?使用代码实现
(1).import java.util.Scanner;
(2). Scanner scan = new Scanner(System.in);
(3). String info = scan.next();
int id = scan.nextInt();
5. 使用for循环遍历100以内的奇数,并计算所有的奇数的和并输出。
int sum = 0; //如果不赋值为0,则以后会编译不通过(sum+=i无法执行,因为不知道sum初始是多少)
for(int i = 1;i <= 100;i++){
if(i % 2 != 0){
Sysout(i);
sum += i;
}
}
syout(sum);