• Java在算法题中的输入问题


    Java在算法题中的输入问题

    在写算法题的时候,经常因为数据的输入问题而导致卡壳,其中最常见的就是数据输入无法结束。

    1.给定范围,确定输入几个数据

    直接使用普通的Scanner输入数据范围,然后使用for循环输入后续数据。

    例如:

    Scanner scanner = new Scanner(System.in);
    //输入数据的范围
    int n = scanner.nextInt();
    for(int i = 0;i < n;i++){
        
        arrays[i] = scanner.nextInt();
    }
    

    2.没有给定范围,但是给出了结束符

    使用while循环,当输入结束符的时候退出循环

    Scanner scanner = new Scanner(System.in);
    //假设使用"0"作为结束符
    //无限循环,在循环中和结束符进行比较,相同则停止循环
    while(true){
        String str = scanner,nextLine();
        if(str == "0"){
            break;
        }
        //没有结束,那么对str进行处理
        
    }
    //判断输入的数据是否为"0",为"0"则停止循环,不为"0"则继续循环
    while(!scanner.hasNext("0")){
        String str = scanner.nextLine();
        //对str进行处理,只要输入不为"0",就可以一直循环下去
    }
    

    3.没有给定范围,直接给定多组数据(这个最需要注意)

    此时不能在使用Scanner进行输入,因为无法结束,我们需要使用(BufferedReader)字符缓冲输入流来进行输入。

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    while((str = br.readLine()) != null){
                //当读入数据的下一行不为空时,进行循环,这里对str进行处理
                
                
                
            }
    

    4.Scanner中next()和nextLine()的区别

    next()输入不会包含空格以后的数据,只会输入第一个空格前的字符,nextLine()输入可以包括空格,只有遇见分隔符(例如回车)才会结束

    Scanner scanner = new Scanner(System.in);
    String str1 = scanner.next();//输入hello world
    String str2 = Scanner.nextLine();//输入hello world
    System.out.println(str1);//输出hello
    System.out.println(str2);//输出hello world
    
  • 相关阅读:
    Janus库简介
    Unity接入北斗探针SDK(基于UnityPlayerActivity)丨四、编写Java代码,导出AAR
    git 详解-提升篇
    Android12之容器类SortedVector、KeyedVector、Vector、VectorImpl总结(一百六十六)
    配置自己的docker开发环境
    33-SparkSql的介绍、DataFrame和DataSet
    Windows 配置 C/C++ 编译环境指南
    基于SSM的健达企业项目管理系统的设计与实现-计算机毕业设计
    弗洛伊德算法(Java)
    nextTick 使用场景
  • 原文地址:https://www.cnblogs.com/foldn/p/15913820.html