- 键盘录入,让程序更加的灵活
我们要实现键盘数据的录入:
A:导包:格式:import java.util.Scanner; 位置:在class的上面
B:创建键盘录入对象 格式:Scanner sc=new Scanner(System.in);
C:通过对象获取数据
格式:int x=sc.nextInt();【注意;I是大写的,类型前后呼应】
例:
import java.util.Scanner;
class ScannerDemo
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数据:");
int x=sc.nextInt(); //【承接上个输入语句中的输入内容,并将输入的数据赋值给x】
//【注意:程序中是int类型,所以键盘录入的数据应符合数据类型,如果非int即不符合所定义的数据类型将会输出不理想的东西】
System.out.println("你输入的数据是:"+x);
}
}
- 使用键盘录入获取三个数据中的最大值
import java.util.Scanner; public class chu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a, b, c, max; System.out.println("请输入a的值:"); a = sc.nextInt(); System.out.println("请输入b的值:"); b = sc.nextInt(); System.out.println("请输入c的值:"); c = sc.nextInt(); max = ((a > b ? a : b) > c ? (a > b ? a : b) : c); System.out.println("abc中的最大值为:" + max); } }
- 语句按顺序执行不必过多解释,见分号则为语句的结束
选择结构:if语句;switch语句
if(比较表达式)
{
语句体;
}
执行流程:先比较表达式的值,看其返回值是true还是false
如果是true,就执行语句体;如果是false,就不执行语句体。
注意,如果为假只影响自己的语句体,其他的顺序执行
- if语句的注意事项:比较表达式无论简单还是复杂,必须boolean类型。
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,则不能省略。建议:永远不要省略。
int a=10;
if(a=100)
System.out.println("a的值是100");
System.out.println("over");
以上两条都会输出,单条语句没有大括号,则if只管就近原则的一个
if(***);
注意,if语句后面加了分号,并不会报错,分号被视为语句的终结,即分号代表一条空语句,后面的继续执行。
而其后面的所有都将与前if没有关系。if语句中,左大括号与分号不共存!
- if语句格式2:
if(比较表达式)
{
语句体1;
}
else
{
语句体2;
}
执行流程:首先计算比较表达式的值,看起返回值是true还是false,如果是true,则执行语句体1。
如果是false,则执行2。else后面是没有比较表达式的,只有if后面有。
if语句来获取两个数据的最大值
int a=10; int b=20; int max1;
if(a>b)
{
max1=a;
}
//这样的比较赋值可以用三元运算符改进:
int max2=(a>b)?a:b;
注意:
三元运算符可以实现的,都可以采用if语句实现,反之不成立。
三元可变为if,if不一定可变为三元。
比如:当if语句控制的操作是一个输出语句时不可以
因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而非一个语句的输出。
- 三元大战if语句
例子:
int a=10;int b=30;int c=20;
/* 三元运算 */
int temp=(a>b)?a:b;
int max=(temp>c)?temp:c;
/* 改为if语句 */
if(a>b){
if(a>c){
max=a;
}else {
max=c;
}
}else{
if(b>c){
max=b;
}else{
max=c;
}
}
//两种方式最后的结果都是一样的,max的值都会是30
- if语句的格式3
if(比较表达式1)
{
语句体1;
}
else if(比较表达式2)
{
语句体2;
}
·······
else
{
语句体n+1;
}
执行流程:
首先计算比较表达式1看返回值是true还是false
如果是true,就执行语句体1,if语句结束
如果是false,接着计算比较表达式2看返回值是true还是false
如果是true,就执行语句体2,if语句结束
如果是false,接着计算比较表达式3看返回值是true还是false
···
如果是false,就执行语句题n+1。
也就是说:如果之前的所有条件语句都是false,就执行最后的else中的语句体。
不同的条件适合同一个结果时建议逻辑运算符“且”“或”等的使用。例如:三个不同的月份对应同一个季节。
- switch语句格式
switch(表达式){
case 值1:
语句体1; break;
case 值2:
语句体2; break;
···
default:
语句体n+1; break;
}
最后的default语句的作用:当之前所有的case值都不符合时则执行default的语句体。
- switch语句中的表达式可以是字符类型,也可以是字符串类型。
用String来定义字符串
String s = sc.nextLine();
switch(s)
{ case "boy": 语句体 ; break;
case "girl": 语句体 ; break;
··········
}
- if与switch的适用范围
if语句:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句:
针对几个常量值的判断
byte,short,int,char
switch语句中的表达式只能用int值
而byte,short,char的级别小于int,在进行运算时可以转换为int
所以可以与switch匹配
但是:
boolean比较特殊,不由任何类型来转化,也不会转化为任何类型