刷题笔记-(牛客NC54287)红鲤鱼与绿鲤鱼与驴-输入问题

本文最后更新于:December 3, 2021 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

题目

兰大有善口技者,名曰GJX,能颂红鲤鱼与绿鲤鱼与驴。你若说1,他便回hongliyu,你若说2,他便回lvliyu,你若说3,他便回lv。现在,你说出了一串只包含1、2、3的数字,请你告诉我们,GJX回答了什么?

题目链接

输入描述:

一行,一个由数字组成的字符串。

输出描述:

一行,一个字符串,代表GJX的回答。

示例:

1
2
3
4
//in
123123
//out
hongliyulvliyulvhongliyulvliyulv

输入字符串长度<=100。

总结

一些输入问题。

这道题很简单。只是在做的过程中,总结一些输入的问题。以下是输入模板。

1
2
3
4
5
6
7
8
9
//1
Scanner Scin = new Scanner(System.in);
//2
StreamTokenizer STcin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//3
BufferedReader BRcin = new BufferedReader(new InputStreamReader(System.in));

//输出
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

在提交过程中发现,用第二种方法进行输入,会存在空指针异常的情况。而其他两种情况输入则没有问题,且能直接AC。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

import java.io.*;
import java.util.Scanner;

/**
* @Author DragonOne
* @Date 2021/9/4 19:40
*/
public class Main {
public static void main(String[] args) throws Exception {
Scanner Scin = new Scanner(System.in);
StreamTokenizer STcin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
BufferedReader BRcin = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

String s;
// STcin.nextToken();
// s = STcin.sval; //有问题

// s = BRcin.readLine();

s = Scin.next();
int len = s.length();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
if(s.charAt(i)=='1'){
sb.append("hongliyu");
}else if(s.charAt(i)=='2'){
sb.append("lvliyu");
}else if(s.charAt(i)=='3'){
sb.append("lv");
}
}
out.println(sb);
out.flush();
}
}

报错:

1
2
3
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:23)

具体原因不知道,所以在此记录一下。ε=(´ο`*)))唉

甚至在后面的一些题中,输入数也会包这个错。好像数字和下标、数组有关的都不行。