题目要求:
###本题主要考察
- 使用
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.*;
public class Main{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
String str;
while(true){
str = in.nextLine();
if(str.compareTo("double")==0){
double d[] = new double[3];
for(int i=0;i<3;i++){
d[i] = in.nextDouble();
}
System.out.printf("choice=%s\n",str);
System.out.printf("%-5.2f,%5.2f,%.2f\n",d[0],d[1],d[2]);
in.nextLine();
}
else if(str.compareTo("line")==0){
String l = in.nextLine();
System.out.printf("choice=%s\n",str);
System.out.println(l.toUpperCase());
}
else if(str.equals("str")){
String digit;
digit=in.next();
digit=in.next()+digit;
digit=in.next()+digit;
System.out.printf("choice=%s\n",str);
System.out.println(digit);
in.nextLine();
}
else if(str.compareTo("int")==0){
int sum=0;
for(int i=0;i<3;i++){
int d = in.nextInt();
sum+=d;
}
System.out.printf("choice=%s\n",str);
System.out.println(sum);
in.nextLine();
}
else{
System.out.printf("choice=%s\n",str);
System.out.println("other");
}
}
}
}
代码重点:
1、为什么有些情况下代码块的结尾有in.nextLine(),有些情况下没有?
考虑到,nextDouble类似的不以回车结尾的输入函数与nextLine()混用的时候,就得加in,nextLine()取消回车影响。
2、为什么下面1代码不行,2代码行?明明示例都是对的。
所有考例中有可能有空串或者长空格字符串的情况。
nextLine().split(” “)与next()的区别
next()
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。比如,在控制台输入“ gjm gjm ”时,一次next()读入进来的仅仅是”gjm”。它不能得到带空格的字符串的!
nextLine()
nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符。比如,在控制台输入“ gjm gjm ”时,一次nextLine()读入进来的结果是” gjm gjm “。它是可以得到带空格的字符串的!
1:nextLine().split(” “)
String s[] = in.nextLine().split(” “);
输入:1 2 4
输出:212:next()
digit=in.next();
digit=in.next()+digit;
digit=in.next()+digit;输入:1 2 4
输出:421
代码展示:
//1不能过
else if(str.compareTo("str")==0){
String s[] = in.nextLine().split(" ");
System.out.printf("choice=%s\n",str);
for(int i=2;i>=0;i--){
if(i==0){
System.out.printf("%s\n",s[i]);
}
else{
System.out.print(s[i]);
}
}
}
//2能过
else if(str.equals("str")){
String digit;
digit=in.next();
digit=in.next()+digit;
digit=in.next()+digit;
System.out.printf("choice=%s\n",str);
System.out.println(digit);
in.nextLine();
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103202.html