一、Scanner对象
1、next注意
1) 一定要读到有效字符后才可以结束
2) 对输入之前遇到的空白字符,next()方法自动将其去掉
3) 只有输入有效字符之后才将其后面的空白作为分隔符或者结束符
4) next() 不能得到带有空格的字符串
2、nextline()注意
1) 以Enter作为结束符,也就是说nextline()方法返回的是输入回车之前的所有字符
2) 可以获得空格
不能将类名定为Scanner,会发生冲突
用法
import java.util.Scanner; // 导入包
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入:");
if(scanner.hasNextDouble()){
Double s = scanner.nextDouble(); // 类型改变
System.out.print(s);
} else {
System.out.print("Don't Double!!!"); // 捕捉类型错误, try catch
}
scanner.close();
}
}
顺序结构
判断结构
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入成绩:");
double score;
while (scanner.hasNextDouble()) {
score = scanner.nextDouble();
if (score <= 100 && score >= 90) {
System.out.println("优秀");
} else if (score < 90 && score >= 80) {
System.out.println("良");
} else if (score >= 70 && score < 80) {
System.out.println("一般");
} else if (score >= 0 && score < 60) {
System.out.println("不及格");
} else if (score >= 60 && score < 70) {
System.out.println("及格");
} else {
System.out.println("输入错误!");
}
}
scanner.close();
}
}
case分支语句
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入成绩:");
String op;
op = scanner.next();
switch(op) {
case "A":
System.out.print("优秀");
break;
case "B":
System.out.print("良好");
break;
case "C":
System.out.print("一般");
break;
case "D":
System.out.print("及格");
break;
case "E":
System.out.print("不及格");
break;
default:
System.out.print("输入不合法!");
}
scanner.close();
}
}
看源码 反编译
循环结构
while 循环 do while 循环 for循环
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int odd = 0;
int even = 0;
for(int i = 1; i <= 100; i ++)
if(i % 2 != 0) odd += i;
else even += i;
System.out.println("odd's sum:" + odd);
System.out.println("even's sum:" + even);
scanner.close();
}
}
打印1000以内被5整除的数,每行输出3个
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for(int i = 1; i <= 1000; i ++) {
if(i % 5 == 0) {
System.out.print(i + "\t");
if(i % 15 == 0) {
System.out.println();
}
}
}
scanner.close();
}
}
九九乘法表
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
for(int i = 1; i <= 9; i ++) {
for(int j = 1; j <= i; j ++) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
System.out.print("\n");
}
}
}
for遍历值
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
int[] a = new int[100000 + 10]; // 数组定义方式
for(int i = 1; i <= 1e5; i ++) a[i] = i;
for(int x : a) System.out.print(x + "\n");
}
}
continue break goto
打印三角形
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入层数(大于0的整数):");
int n = scanner.nextInt();
for(int i = 1; i <= n; i ++) {
int t = i * 2 - 1; // *个数
int cnt = n - i; //空格个数
for(int j = 0; j < cnt; j ++) System.out.print(" ");
for(int j = 0; j < t; j ++) System.out.print("*");
System.out.print("\n");
}
scanner.close();
}
}
打印三角形,输入负数,怎么办????
没有仔细考虑过,不过n的合法输入应该是正数
如果我是用户,我输入不小心输入了字符,你这怎么运行,当然,我不是找茬,就是以一名程序员的视角来看这个代码,个人觉得还是严谨一些比较好
那样的话,需要在输入前加上提示信息,代码已修改
超了 我还以为Spring开课了
😂