• PTA中如何出Java编程题?


    很多第一次出Java编程题的老师,不知道Java在PTA中是如何处理输入的。写一篇文章供大家参考。
    有多种类型输入的编程题:

    类型1:固定数量输入

    从控制台读入**两个**数,然后将其相加输出。
    
    对于该题可以有如下两种样例输入输出:
    
    样例输入输出1:
    输入:
    1      2
    输出:
    3
    
    或者
    
    样例输入输出2:
    输入:
    1
    2
    输出:
    3
    

    注意:

    1. 样例输入对应着输入文件中的内容,比如对应着输入文件0.in,一般来说该文件的最后还要有一个回车,比如1 2后面应有一个回车。
    2. 样例输出对应着输出文件的内容,比如对应着输出文件0.out
    3. 文件必需使用UTF-8格式编码,回车换行要使用Linux的回车换行。可以使用Notepad++进行处理。
    4. 不要出现中文!不管是输入文件、输出文件还是学生提交的代码。

    对以上题目有几种解法:

    解法1:

    Scanner sc = new Scanner(System.in);
    int a = sc.nextInt(); //直接将字符串转化为int
    int b = sc.nextInt();
    System.out.println(a+b);
    sc.close();
    

    解法2:

    Scanner sc = new Scanner(System.in);
    int a = Integer.parseInt(sc.next());  //先将每个单元读出为字符串,然后再将其转化为int型
    int b = Integer.parseInt(sc.next());
    System.out.println(a+b);
    sc.close();
    

    使用next()方法可以自动跳过空格、多个空格、空行、回车换行。推荐使用。

    解法3(适用于样例输入输出2,每行只有一个数):

    Scanner sc = new Scanner(System.in);
    int a = Integer.parseInt(sc.nextLine()); //nextLine处理整行,因此如果需要将整行作为一个处理单元,可以使用nextLine
    int b = Integer.parseInt(sc.nextLine());
    System.out.println(a+b);
    sc.close();
    

    注意:

    1. 以上所有处理方法都必须先import java.util.Scanner
    2. 代码中尽量不要将nextLine()与其他如next()nextInt()等方法混用,否则会出现nextLine()只读取到行尾回车换行符的问题。

    类型2:不定数量输入

    从控制台读入**若干**整数,然后将其相加输出。
    
    对于该题可以有如下两种样例输入输出:
    
    样例输入输出1:
    输入:
    1      2  3 4    5 6       7
       8  9  10
    输出:
    55
    
    或者
    
    样例输入输出2:
    输入:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    输出:
    55
    

    解法1:可处理上述两种输入

    Scanner sc = new Scanner(System.in);
    int x = 0;
    while(sc.hasNextInt()) {   //也可替换为sc.hasNext()
    	x += sc.nextInt();     //也可替换为Integer.parseInt(sc.next())
    }
    System.out.println(x);
    sc.close();
    

    解法2:可处理样例输入输出2

    Scanner sc = new Scanner(System.in);
    int x = 0;
    while(sc.hasNextLine()) {   //也可替换为sc.hasNext()
    	x += sc.nextIntLine();     //也可替换为Integer.parseInt(sc.next())
    }
    System.out.println(x);
    sc.close();
    

    注意:

    1. 当使用hasNextInt()时,在Eclipse中测试的时候,程序不会停止。但是在PTA可正常提交。
    2. 一般来说hasNext()next()hasNextInt()nextInt()hasNextLine()nextLine()配合使用,其他依次类推。

    类型3:输入中可能包含不同类型的数据

    如果所处题目样例输入中可能要对出现的数字、字符串、bool类型数据区别对待,并且这些数据出现无规律。
    可尝试使用Scanner的next()方法,先将其转换字符串再进行处理。

    其他PTA相关文章:

    PTA中提交Java程序的一些套路
    PTA分享码-Java

  • 相关阅读:
    phpStudy The requested URL /web/index.php was not found on this server
    python yield 理解与用法
    python 高阶函数之 map
    python 高阶函数之 reduce
    java extends和implements区别
    SpringMVC中使用Interceptor拦截器顺序
    SpringMVC 拦截器使用说明
    java session创建与获取
    跨域解决方案
    nrm -- 一键切换npm源
  • 原文地址:https://www.cnblogs.com/zhrb/p/7830859.html
Copyright © 2020-2023  润新知