使用Scanner
类来接收用户的输入。
新建一个Scanner
对象:Scanner input = new Scanner(System.in);
input
可以接收各种数据类型的输入:比如nextInt
、nextByte
等,但是这样不太安全,因为如果输入了别的类型的数据,代码就会直接报错;
所以比较常用的是next()
和nextLine()
,它们都返回的是String
类型;
其中next
会从第一个不为空格的字符开始接收,然后遇到空格或换行符结束接收;
nextLine
会接收一整行内容,直到遇到换行符结束接收;
注意不要同时使用next
和nextLine
,会得不到想要的结果。
import java.util.Scanner;
public class input {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入next接收的内容:");
String str1 = input.next();
System.out.println(str1);
}
}
结果如下:
请输入next接收的内容:
24dg 78tyu
24dg
import java.util.Scanner;
public class input {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入nextLine接收的内容:");
String str2 = input.nextLine();
System.out.println(str2);
}
}
结果如下:
请输入nextLine接收的内容:
ud78 56dgy__@#$ !~
ud78 56dgy__@#$ !~
1996 年, 计算机科学家 Bohm 和 Jacopini 证明了: 任何简单或复杂的算法都可以由顺序结构、 分支结构和循环结构这三种基本结构组合而成。
它们的共同点是都包含一个入口和一个出口, 它们的每个代码都有机会被执行, 不会出现死循环。
顺序结构 :一种基本的控制结构,按照语句出现的顺序执行操作;
分支结构 :又称为选择结构,根据条件成立与否来执行操作;
循环结构 :一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
if 条件结构是根据条件判断之后再做处理
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
例子: 用户输入学生成绩, 判断成绩是否及格, 判断条件为 优良: > 90、 良好: 81-90、 中: 60-80、 不及格: <60
import java.util.Scanner;
public class ifelse {
public static void main(String[] args) {
System.out.println("请输入考试成绩:");
Scanner input = new Scanner(System.in);
int s = input.nextInt();
if(s >= 120 || s < 0) {
System.out.println("输入成绩有误!");
}else if(s >= 90) {
System.out.println("成绩优秀!");
}else if(s >= 80) {
System.out.println("成绩良好!");
}else if(s >= 70) {
System.out.println("成绩合格!");
}else {
System.out.println("成绩不合格!");
}
}
}
switch(表达式){
case 取值 1: 语句块 1;break;
case 取值 n: 语句块 n;break;
default: 语句块 n+1;break;
}
switch 语句有关规则
表达式的返回值必须是下述几种类型之一: int, byte, char, short,String;
case 子句中的取值必须是常量, 且所有 case 子句中的取值应是不同的;
default 子句是可选的;
break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块; 如果 case 后面没有写 break 则直接往下面执行!
case 后面的执行体可写{ }也可以不写{ }
例题: 多分支月份输出天数(充分利用语句特性)
import java.util.Scanner;
public class switchcase {
public static void main(String[] args) {
System.out.println("请输入一个月份(1-12):");
Scanner input = new Scanner(System.in);
String text = input.next();
switch (text) {
case "1":
case "2":
case "3":
System.out.println("春季");
break;
case "4":
case "5":
case "6":
System.out.println("夏季");
break;
case "7":
case "8":
case "9":
System.out.println("秋季");
break;
case "10":
case "11":
case "12":
System.out.println("冬季");
break;
default:
System.out.println("输入月份有误!");
break;
}
}
}
**循环语句功能 **
在循环条件满足的情况下, 反复执行特定代码
**循环语句分类 **
for 循环
while 循环
do/while 循环
符合条件, 循环继续执行; 否则, 循环退出
特点: 先判断, 再执行
语法:
while(条件表达式){
//语句块;
}
使用 while 循环的步骤
1、 分析循环条件和循环操作
2、 套用 while 语法写出代码
3、 检查循环是否能够退出
实现示例:
录入班级人数和学员成绩, 计算班级学员的平均成绩
import java.util.Scanner;
public class whiledemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入班级总人数");
//使用变量studentNum记录班级总人数
int studentNum = input.nextInt();
//用于记录循环的次数,以及控制循环何时结束
int i = 0;
//定义变量sum,用于统计总分数
int sum = 0;
while(i < studentNum) {
i++;
System.out.println("请输入第"+i+"个学生的成绩:");
int s = input.nextInt();
sum += s;
}
System.out.println("学生的平均成绩为:"+sum/studentNum);
}
}
先执行一遍循环操作, 符合条件, 循环继续执行; 否则, 循环退出
特点: 先执行, 再判断
语法:
do {
//循环操作
}while ( 条件表达式 );
**while 循环和 do-while 循环的区别? **
while:先判断条件, 如果条件满足, 再执行循环操作
do while:先执行一遍循环操作, 然后再判读条件, 如果条件满足, 继续执行循环操作。
语法:
for(初始化参数; 判断条件; 更新循环变量){
//循环体;
}
break是用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接退出循环;
continue是用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。
在要退出到的地方起个别名,然后break XXX;
public class exit_many_xunhuan {
public static void main(String[] args) {
haha:for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
System.out.println("i="+i+" , j="+j);
if (i==5 && j==5) {
break haha;
}
}
}
}
}
import java.util.Scanner;
public class panduan_input_leixing {
public static void main(String[] args) {
System.out.println("请输入一个数字:");
Scanner input = new Scanner(System.in);
//在接收输入之前判断输入的类型是否为int
if(input.hasNextInt()) {
int num = input.nextInt();
System.out.println("你输入的是:"+num);
}else {
System.out.println("你输入的类型不是int");
}
}
}