Java笔试机考必备技能Scanner类常用操作

博主最近准备面试,发现很多公司机考题跟LeetCode不一样,不是只是关注核心逻
辑部分,而是连测试数据都要自行控制台输入;那么为了避免对Scanner类常用方法不熟的同学遇到不必要的麻烦,今天准备收集一下Scanner的常用操作。

通常用比较多的就是s.nextLine(),获取当前行的内容 让后光标停留在下一行。
如何控制输入的行数呢?无非就是通过控制循环的次数。

  • 常用的while然后指定输入的哪一个字符就跳出循环
  • for循环也可以,先nextLine获取一个控制循环的次数
  • 当然if也可以,道理跟while一样
    下面简单一个例子:
public class MyScanner {
    
    
    public static void main(String[] args) {
    
    
        Scanner s = new Scanner(System.in);
        int length = Integer.parseInt(s.nextLine());
        String[] strs = new String[length];
        for(int i=0;i<length;i++){
    
    
            strs[i] = s.nextLine();
        }
        Arrays.sort(strs);
        for(String str : strs){
    
    
            System.out.println(str);
        }
        while(s.hasNextLine()){
    
    
            String out = s.nextLine();
            if (!out.equals("stop"))
            System.out.println(out);
            else break;
        }
        System.out.println("Scanner test over!");
    }
}

另外用到哪些包需要import一下,不然编译不通过;另外如果自己本地编辑器结果没问题,但是机考的有问题,可以检查一下自己的代码 最好换一个思路。。。
有时候就是注意加上while(s.hasNextLine()){},大神解释是可能某个网站判定需要测试多组,所以最好加上,例如:牛客上的

public class MyScanner {
    
    
    public static void main(String[] args){
    
    
        Scanner s = new Scanner(System.in);
        while(s.hasNextLine()) {
    
    
            int lineNum = Integer.parseInt(s.nextLine());
            String[] strs = new String[lineNum];
            for (int i = 0; i < lineNum; i++) {
    
    
                String str = s.nextLine();
                if (str == null || str.length() == 0) {
    
    
                    strs[i] = str;
                    continue;
                }
                if (str.length() < 100)
                    strs[i] = str;
            }
            List<String> list = new ArrayList<>();
            for (String str : strs) {
    
    
                if (str.length() > 8) {
    
    
                    for (String string : getSubstring((str.length() - 1) / 8 + 1, str)) {
    
    
                        list.add(string);
                    }
                } else if (str.length() < 8)
                    list.add(str + "00000000".substring(0, 8 - str.length()));
                else list.add(str);
            }
            list.forEach(System.out::println);
        }
    }
    private static String[] getSubstring(int length, String string){
    
    
        String[] strings = new String[length];
        for(int j=0;j<length-1;j++){
    
    
            strings[j] = string.substring(j*8, (j+1)*8);
        }
        if(string.length()>1){
    
    
            String last = string.substring((length-1)*8);
            strings[length-1] = last + "00000000".substring(0,8-last.length());
        }
        return strings;
    }
}

猜你喜欢

转载自blog.csdn.net/blackxc/article/details/108337922