Java基础day4【谷】
从键盘输入
实现步骤:
1.导包 import java.utils.Scanner;
2.Scanner的实例化:Scanner sc=new Scanner(System.in);
3.调用Scanner类的相关方法{next()/nextXxx()},来获取指定类型的变量
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a =sc.nextInt();
System.out.println(a);
}
}
实现代码:
import java.util.Scanner;
class love{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“请输入姓名:”);
String name =sc.next();
System.out.println(“请输入年龄:”);
int age =sc.nextInt();
//对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
System.out.println(“请输入性别:”);
String gender =sc.next();
char genderOne= gender.charAt(0);//获取索引为0位置上的字符
System.out.println(“请输入体重:”);
double weight =sc.nextDouble();
System.out.println(“姓名”+name+“年龄”+age+“性别”+gender+“体重”+weight);
}
}
注意:
需要根据对应的方法,来输入指定类型的值。如果输入的数据类型与需要的数据类型不匹配时,会报异常:InputMisMatchException,导致程序终止。
不违背语法规则时没问题的。(输入的数据类型长度小于需要的数据类型长度)
if-else例题:
import java.util.Scanner;
class IfTest{
public static void main(String[] arges){
Scanner sc = new Scanner(System.in);
int goal = sc.nextInt();
if(goal==100){
System.out.println(“奖励一辆BMW”);
}else if(goal>80 && goal<=99){
System.out.println(“奖励一台水果电话”);
}else if(goal>=60 && goal<=80){
System.out.println(“奖励一台ipad”);
}else{
System.out.println(“Nothing!!!”);
}
}
}
说明:
1.else 结构是可选的
2.针对于条件表达式:
对于多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,都无所谓。
对于多个条件表达式之间是有“交集”的关系,哪个判断和执行语句声明在上面还是下面,有所谓。
对于多个条件表达式之间是“包含”关系(交集的关系的特殊情况),哪个判断和执行语句声明在上面还是下面,有所谓。
import java.util.Scanner;
class IfTest2{
public static void main(String[] arges){
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
if(num1>=num2){
if(num1>=num3){
System.out.println(“最大值为”+num1);
}else{
System.out.println(“最大值为”+num3);
}
}else if(num2>=num3){
System.out.println(“最大值为”+num2);
}else{
System.out.println(“最大值为”+num3);
}
}
}
注意:if-else可以嵌套
if-else中只有一条执行语句时,大括号可以省略。
非常不建议使用
课后练习:
import java.util.Scanner;
class IfTest3{
public static void main(String[] arges){
Scanner sc = new Scanner(System.in);
double age = sc.nextDouble();
if(age>=0){
if(age<=2){
age=age*10.5;
System.out.println(“年龄为:”+age);
}else{
age=(age-2)4+10.52;
System.out.println(“年龄为:”+age);
}
}else{
System.out.println(“输入错误!!!”);
}
}
}
import java.util.Scanner;
class IfTest4{
public static void main(String[] arges){
//[10,99] [10,100)
//[0.0,1.0)
int result=(int)(Math.random()*90+10);
int ge=result%10;
int shi=result/10;
System.out.println(result+“\t”+ge+“\t”+shi);
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int nge=num%10;
int nshi=num/10;
System.out.println(num+“\t”+nge+“\t”+nshi);
if(numresult){
System.out.println(“奖金为:10000美元”);
}else if(genshi&&ngeshi){
System.out.println(“奖金为:3000美元”);
}else if(genge||shinshi){
System.out.println(“奖金为:1000美元”);
}else if(genshi||shi==nge){
System.out.println(“奖金为:500美元”);
}else{
System.out.println(“奖金为:0美元”);
}
}
}
随机数公式:[a,b]----》(int)(Math.random()*(b-a+1)+a)
switch-case结构
说明:
①根据switch表达式的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。
当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
②break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
③switch结构中的表达式,只能是如下6种数据类型之一:
btye int short char 枚举类型 String类型
④case之后只能声明常量。不能声明范围。
⑤break关键字可以加可以不加,根据实际情况来定。
⑥default:相当于if-else结构中的else.
default结构是可选的,位置是灵活的。
练习
从键盘上输入2019年的“month’‘和“day’,要求通过程序输出输入的日期为2019年的第几天。
思路:倒过来从12月开始写,并且不需要break,利用switch特点来实现总天数的运算。
说明:
1.凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。
2.我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们可以优先使用switch-case.原因:switch-case执行效率稍高。
for循环结构的使用
一、循环结构的四个要素
①初始化条件
②循环条件 --------(boolean类型)
③循环体
④迭代条件
二、for结构的循环
for(①;②;④){
③
}
①–②–③–④–②–③–④–②
例题
class ForTest{
public static void main(String[] args){
for(int i=1;i<=150;i++){
System.out.print(i);
if(i%30){
System.out.print(“foo”);
}
if(i%50){
System.out.print(“biz”);
}
if(i%7==0){
System.out.print(“baz”);
}
System.out.print(“\n”);
}
}
}