本题主要考察
使用Scanner处理输入
使用System.out.printf进行格式化输出
String常用方法与字符串常用操作
main
输入说明:
输入double,然后输入3个浮点数。输出:从左到右依次输出3个double(均保留2位小数输出,宽度为5),格式依次为:右侧填充空格,左侧填充空格,直接输出
输入int,然后输入3个整数(以1个或多个空格分隔)。输出:将3个整数相加后输出。
输入str,然后输入3个字符串。输出:去除空格,然后倒序输出3个字符。
输入line,然后输入一行字符串。输出:转换成大写后输出。
如果输入不是上面几个关键词,输出:输出other。
输出说明
choice=你输入选项
该选项对应的输出内容
提示
可使用line.split(“\s+”);将以1个或多个空格分隔开的字符串分割并放入字符串数组。
Scanner.nextLine与Scanner的其他next函数混用有可能出错。
输入样例:
double
1.578 3.0 3.14259
line
aaaaaaaaaa
int
1 2 3
str
321 654 987
line
dddddddddd
end
输出样例:
choice=double
1.58 , 3.00,3.14
choice=line
AAAAAAAAAA
choice=int
6
choice=str
987654321
choice=line
DDDDDDDDDD
choice=end
other
代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while (in.hasNext()){
String k=in.nextLine();
System.out.printf("choice="+k+"\n");
switch (k){
case "double":
double a, b, c;
a = in.nextDouble();
b = in.nextDouble();
c = in.nextDouble();
in.nextLine();
System.out.printf("%-5.2f,%5.2f,%.2f", a, b, c);
break;
case "line":
char q[]=in.nextLine().toCharArray();
for (int i=0;i<q.length;i++)
if (q[i]>='a'&&q[i]<='z') q[i]-=32;
for (char value : q) System.out.print(value);
break;
case "int":
int aa, bb, cc;
aa = in.nextInt();
bb = in.nextInt();
cc = in.nextInt();
in.nextLine();
System.out.print(aa+bb+cc);
break;
case "str":
String pp[]=new String[3];
for (int i=0;i<3;i++) { pp[i]=in.next();}
in.nextLine();
for (int i=2;i>=0;i--) System.out.print(pp[i]);
break;
default:
System.out.print("other");
}
System.out.print("\n");
}
}
}
只是语法练手题,不过显然有些坑,记录一下。
- nextint,double等读完后会留下这一行最后的换行符。如果之后不用nextline 消耗的话,当你下次用nextline就会误读回车进去。