Scanner和流程控制
Scanner
Scanner是获取用户输入的一种关键词,使用next或者nextline获取用户的输入,
Scanner s = new Scanner(System.in);
上面这一行就是new了一个Scanner获取用户在键盘上的输入,后面我们可以用hasNext或者hasNextline来判断是否用户继续输入,
public class D1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//new一个Scanner,System.in代表着获取输入
System.out.println("next");
if (scanner.hasNext()){ //用hasNextline判断用户是否输入
String STR = scanner.next();//将输入的字符串定义为STR
System.out.println("输出:"+str);//输出STR
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("nextline");
if (scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出:"+str);
}
}
}
但是我们要注意,next和nextline是有区别的,next是以空格为终止符,也就是说HELLO WORLD这一串用next只能输出HELLO,而nextline是以回车为终止符,也就是在回车之前的字符都可以被输出。
if选择结构
顺序结构是最基本的算法结构,也就是代码从上到下一行一行的执行就不必多说,if选择结构非常简单
if单选择结构
public static void main(String[] args) {
int a = 0;//定义一个a=0
if (a<0){ //如果a<0则运行以下的代码
System.out.println("a<0");
}
}
if双选择结构
public static void main(String[] args) {
int a = 0;
if (a<0){
System.out.println("a<0");
}else{ //如果a不小于0则运行以下代码
System.out.println("a=0")
}
}
if多选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入成绩:");
double a = scanner.nextDouble();
if (a<100&&a>=90) {
System.out.println("优秀");
} else if (a<90&&a>=80) {
System.out.println("良好");
} else if (a<80&&a>=60) {
System.out.println("及格");
}else if (a<60){
System.out.println("差");
}else{
System.out.println("未知");
}
}
与双选择不同的是,if多选择可以添加很多个else if来选择,但是最后一个选择必定是else。
switch选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入A,B,C成绩:");
String name = scanner.next();
switch(name){
case"A"://如果是A就运行以下代码
System.out.println("youxiu");
break;
case"B"://如果是B就运行以下代码
System.out.println("lianghao");
break;
case"C"://如果是C就运行以下代码
System.out.println("cha");
break;
default://如果都不是就运行以下代码
System.out.println("weizhi");
}
}
与if不同的是,switch的每一个case下面都要添加break来作为结束,不然就会将下面的代码也一起运行,这种现象叫case穿透,在之后需要尤其注意。
while循环
public static void main(String[] args) {
int i = 0;
double a =0;
while(i<=100){//如果a<=100条件成立,程序便会一直运行下去
a=a+i;
i++;
}
System.out.println(a);
}
while循环是一种循环结构,如果括号中的表达式成立,它便会一直运行循环中的代码,但是一直循环就变成了死循环,所以需要一个使失效的表达式来结束,其中i<=100就是失效表达式,当i在循环中一直自增,增加到101时表达式就会失效而结束循环。
do whlie循环
public static void main(String[] args) {
int i = 0;
do{
System.sout.println(i);
}whlie(i<0)
}
do while循环和while循环最重要的差别就是,while循环时先判断再执行,而do while是先执行再判断,上面的代码我们可以看到i不满足执行条件,但是输出结果会是一个0,这就是因为程序先执行了上面的代码,再判断i<0。
for循环
public static void main(String[] args) {
int a =0;
int b =0;
for(int c=0;c <= 100;c++){//初始值为c=0,布尔值为c<=100,迭代为c++
if (c%2!=0){
a+=c;
}else{
b+=c;
}
}
System.out.println(a);
System.out.println(b);
}
for循环时灵活有效的循环方式,代码为 for(初始值,布尔值,迭代)。上面的代码运行的便是c初始等于零当c小于等于100时运行其中的代码,c每一次运行代码过后自增一次。