一,首先我们来大体梳理一下Scanner类:
1.Scanner类是为获取用户的输入
2.Scanner对象的创建:Scanner sc=new Scanner(System.in);
3.常见的成员方法
(1)String next() 查找并返回来自此扫描器的下一个完整标记, 获取一个字符串
注意:
next()必须得到有效字符
next()获取第一个空格前数据(比如,输入a b c得到a,输入 a b得到a)
(2) int nextInt() 将输入信息的下一个标记扫描为一个 int, 获取一个int类型的数据
(3)String nextLine() 此扫描器执行当前行,并返回跳过的输入信息,获取一行数,见到回车就结束,可获得包含空格在内的字符
二、Scanner类中没有获取单个字符的方法,但我们可以按照以下方法获取, 走位,走位~~~
了解之后,咱来用这道算法题玩一把练练手:以下是PAT乙级1036的题目,题目不难,可借此做一下对Scanner的应用:
题目描述:
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式:
输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。
输出格式:
输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。
输入样例:
10 a
输出样例:
aaaaaaaaaa
a a
a a
a a
aaaaaaaaaa
题目来源:PAT乙级1036
作者:CHEN, Yue
单位:浙江大学
java版代码实现:
package pat;
import java.util.Scanner;
public class B1036 {
public static void main(String[] args) {
// TODO Auto-generated method stu
int row, col;// 行列
Scanner sc = new Scanner(System.in);
System.out.println("请输入列数");
col = sc.nextInt();
//获取单个字符的处理
System.out.println("请输入字符");
Scanner sc2 = new Scanner(System.in);
String s = sc2.nextLine();// 得到一行数
char cr[] = s.toCharArray();// 转为字符数组
char c = cr[0];// 单个字符即为字符数组的第一个
// 行数
if (col % 2 == 1)
row = col / 2 + 1;// 奇数则向上取整
else
row = col / 2;
// 打印第一行
for (int i = 0; i < col; i++) {
System.out.print(c);
}
// 换行
System.out.print("\n");
// 打印中间2到row-1行
for (int i = 2; i < row; i++) {
System.out.print(c);
for (int n = 2; n < col; n++) {
System.out.println(" ");// 打空格
}
System.out.print("\n");// 打完最后一个就换行
}
// 打最后一行
for (int m = 0; m < col; m++) {
System.out.print(c);
}
}
}
此题很简单,可以练练手~~
如有错误或笔误欢迎大家留言,会及时更正哒~