JAVA中Scanner类如何读入单个字符&&PAT乙级1036题JAVA 实现

,首先我们来大体梳理一下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);
		}

	}

}

此题很简单,可以练练手~~

如有错误或笔误欢迎大家留言,会及时更正哒~

 

发布了13 篇原创文章 · 获赞 11 · 访问量 876

猜你喜欢

转载自blog.csdn.net/weixin_43156201/article/details/104081074
今日推荐