接收用户键盘输入
输出信息到控制台:System.out.println();
在java中怎么接收键盘的输入呢?
前提:java.until.Scanner s = new java.until.Scanner(System.in);
接受一个整数:int num = s.nextInt();
接受一个字符串:String str = s.next();
public class KeyInput{
public static void main(String[] args){
//创建一个键盘扫描器对象
//s只是一个变量名,可以修改
java.until.Scanner s = new java.until.Scanner(System.in);//这行代码写一次就行了。
//接受用户的输入,从键盘上接收一个int类型的数据
//代码执行到这里的时候,会暂停下来,等待用户的输入,
//用户可以从键盘上输入一个整数,然后回车,回车之后
//userInputNum变量就有值了。并且userInputNum变量中保存的这个值是用户输入的变量。
int userInputNum = s.nextInt();//userInputNum这只是个变量名,用来接收用户输入的数据的。
System.out.println("您输入的数字是:" + userInputNum);
//代码执行到此处又会停下来,等待用户输入
//敲完回车,s.nextInt();代码执行结束。
int i = s.nextInt();//i是变量名,s是上边定义的变量名。
System.out.println("您输入的数字是:" + userInputNum);
//如果输入的不是数字,那么会出异常:InputMismatchException(输入不匹配)
//那么怎么从键盘上接收一个字符串呢?
//程序执行到此处会停下来,等待用户输入,用户可以输入字符串
String str = s.next();
System.out.println("您输入了:" + str)
}
}
接收用户键盘输入import形式
import java.until.Scanner;
//更有交互性
public class KeyInput{
public static void main(String[] args){
//创建一个键盘扫描器对象
Scanner s = new Scanner(System.in);
//输出一个信息
System.out.println("欢迎使用小型迷你计算器");
System.out.print("请输入第一个数字:" + num1);
int num1 = s.nextInt();
System.out.print("请输入第二个数字:" + num2);
int num2 = s.nextInt();
System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));
}
控制语句分类
控制语句的出现可以让我们的程序具有逻辑性/条理性,可以使用控制语句来实现一个“业务”了。
分类:3类
选择语句(或叫做分支语句):if语句、switch语句
循环语句(主要循环反复的去执行某段特定的代码块):for循环、while循环、do...while循环
转向语句:break、continue、(return,后面讲方法的时候会使用)
选择语句/分支语句if
if语句的语法格式及原理
if语句是分支语句,也可以叫做条件语句。
if 这个单词翻译为如果,所以又叫做条件语句。
if语句的语法格式:
第一种写法:
if(布尔表达式) {
java语句;
java语句;
}
这里的一个大括号 {} 叫做一个分支。
执行原理:如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。
第二种写法:
if(布尔表达式){ //分支1
java语句;
}else{ //分支2
java语句
}
执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,执行分支2,分支1不执行。
这种写法可以保证一定会有一个分支执行。
第三种写法:
if(布尔表达式1){ //分支1
java语句;
}else if(布尔表达式2){ //分支2
java语句;
}else if(布尔表达式3){ //分支3
java语句;
}......
执行原理:先判断布尔表达式1,如果布尔表达式1为true,则执行分支1,然后if语句结束了。如果布尔表达式1的结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是ture,则执行分支2,然后整个if就结束了。如果布尔表达式2的结果为false,那么会继续判断布尔表达式3的结果,以此类推......
从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。
第四种写法:
if(布尔表达式1){ //分支1
java语句;
}else if(布尔表达式2){ //分支2
java语句;
}else if(布尔表达式3){ //分支3
java语句;
}else{
java语句; //以上条件没有成立的,这个else就执行了。
}
注意:
1.在if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)
2.以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,这样的语句,可能会导致最后一个分支都不执行。
3.当分支当中”java语句“只有一条,那么大括号可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号省略,能看懂就行。)
if语句嵌套的理解
控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好一个语句一个语句进行分析,不冗杂在一起分析。
小窍门:分析外面if语句的时候,里面的其他语句,看成一堆java代码就可以了。
if案例
public class Test{
public static void main(String[] args){
//定义一个布尔类型的变量,表示性别。
boolean sex = ture;
//业务:当sex为true时表示男,为false时表示女。
if(sex == ture){
System.out.println("男");
}else{
System.out.println("女");
}
}
}
这样编写太low,可以进行改良。
sex已经定义为布尔类型了,就可以这么改。改良结果如下:
public class Test{
public static void main(String[] args){
boolean sex = ture;
if(sex){
System.out.println("男");
}else{
System.out.println("女");
}
}
}
使用三目运算符,可以进一步改良。改良结果如下
public class Test{
public static void main(String[] args){
boolean sex = ture;
System.out.println(sex ? "男" : "女")
}
}
以下的代码为什么可以这样写呢?
public class Test{
public static void main(String[] args){
boolean sex = ture;
if(sex = ture){ //以前sex不管是true还是false,到这里,sex一定是true。
System.out.println("男");
}else{
System.out.println("女");
}
}
}
因为小括号当中最终取的值时sex变量的值,而sex变量是布尔类型,所以这个可以通过。但是这样得话,sex的值始终为true,因为你已经把true赋值给了sex,哪怕是重新定义了sex,sex的结果还是true。虽然这种语法可以,但是会导致else分支永远不能执行。
if语句的大括号省略
public class Test{
public static void main(String[] args){
boolean sex = ture;
if(sex)
System.out.println("男");
else
System.out.println("女");
}
}
以上这个是没有任何问题的。
public class Test{
public static void main(String[] args){
boolean sex = ture;
if(sex)
System.out.println("男");
System.out.println("HelloWorld!");//以上这三行代码没有任何问题,合乎语法。
//else//这一行编译报错,else缺少if
// System.out.println("女");
}
}
if语句根据年龄判断生命阶段
业务要求:
1.从键盘上接收一个人的年龄。
2.年龄要求为【0-150】,其它值表示非法信息。
3.根据人的年龄来动态判断这个人属于生命的哪个阶段。
[ 0-5 ] 婴幼儿
[ 6-10 ] 少儿
[ 11-18 ] 少年
[ 19-35 ] 青年
[ 36-55 ] 中年
[ 56-150 ] 老年
4.请使用if语句完成以上的业务逻辑。
public class Test1{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请您输入年龄:");
int age = s.nextInt();
if(age < 0 || age > 150){
System.out.println("对不起,年龄值不合法");
}else{
if(age <=5 ){
System.out.println("婴幼儿");
}else if(age <= 10){
System.out.println("少儿");
}else if(age <= 18){
System.out.println("少年");
}else if(age <= 35){
System.out.println("青年");
}else if(age <= 55){
System.out.println("中年");
}else{
System.out.println("老年");
}
}
}
}
以上代码运用了if嵌套,也可以不用嵌套来做。
public class Test1{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请您输入年龄:");
int age = s.nextInt();
if(age < 0 || age > 150){
System.out.println("对不起,年龄值不合法");
}else if(age <=5 ){
System.out.println("婴幼儿");
}else if(age <= 10){
System.out.println("少儿");
}else if(age <= 18){
System.out.println("少年");
}else if(age <= 35){
System.out.println("青年");
}else if(age <= 55){
System.out.println("中年");
}else{
System.out.println("老年");
}
}
}
进一步改良
public class Test1{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请您输入年龄:");
int age = s.nextInt();
String str = "老年";//字符串变量默认值是"老年"。
if(age < 0 || age > 150){
System.out.println("对不起,年龄值不合法");//既然不合法,就不要往下继续执行了。
return;//终止程序
}else if(age <=5 ){
str = "婴幼儿";
}else if(age <= 10){
str = "少儿";
}else if(age <= 18){
str = "少年";
}else if(age <= 35){
str = "青年";
}else if(age <= 55){
str = "中年";
}
System.out.println(str);
}
}
当然还有其他写法,还需要自己挖掘,慢慢学习的过程中去发现,去改良。
if根据成绩判断等级
业务要求:
1.系统接收一个学生的考试成绩,根据考试成绩纯输出成绩的等级。
2.等级:
优秀:90-100
良好:80-90(不包括90)
中等:70-80(不包括80)
及格:60-70(不包括70)
不及格:0-60(不包括60)
3.要求成绩是一个合法的数字,成绩必须在0-100之间,成绩可能带有小数。
可以参考上面的生命阶段的案例,可以写出很多种。这里只给出一种写法。
public class Test1{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请您输入学生成绩:");
double chengJi = s.nextDouble();
if(chengJi < 0 || chengJi > 100){
System.out.println("对不起,您输入的成绩无效");
}else if(chengJi < 60 ){
System.out.println("不及格");
}else if(chengJi < 70){
System.out.println("及格");
}else if(chengJi < 80){
System.out.println("中等");
}else if(chengJi < 90){
System.out.println("良好");
}else {
System.out.println("优秀");
}
}
}
if案例
业务:从键盘上接收天气的信息:1表示雨天,0表示晴天。同使从键盘上接收性别的信息:1表示男,0表示女。
业务要求:天气为雨天时男生打一把大黑伞,女打一把小花伞。天气为晴天时,男生直接出去玩,女生擦点防晒出去玩。
需要使用if语句以及嵌套的方式展现这个业务。
import java.util.Scanner;
public class TianQi{
public static void main(String[] args){
Scanner weather = new Scanner(System.in);
System.out.print("请输入天气信息1或0(雨天/晴天):");
int tianQi = weather.nextInt();
Scanner sex = new Scanner(System.in);
System.out.print("请输入性别信息1或0(男生/女生):");
int xingBie = sex.nextInt();
if(tianQi == 1){
if(xingBie == 1){
System.out.println("男生,雨天打一把大黑伞");
}else{
System.out.println("女生,雨天打一把小花伞");
}
}else{
if(xingBie == 1){
System.out.println("男生,晴天直接出门玩耍");
}else{
System.out.println("女生,晴天擦点防晒出门玩耍");
}
}
System.out.println("希望您玩的开心!");
}
}