zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    艾伟_转载:学习 ASP.NET MVC (第三回)实战篇 狼人:
    艾伟_转载:40条ASP.NET开发Tip 狼人:
    艾伟_转载:20条.NET编码习惯 狼人:
    艾伟_转载:数组排序方法的性能比较(上):注意事项及试验 狼人:
    艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重 狼人:
    艾伟_转载:学习 ASP.NET MVC (第四回)实战篇 狼人:
    艾伟_转载:学习 ASP.NET MVC (第五回)理论篇 狼人:
    艾伟_转载:ASP.NET MVC 2博客系列 狼人:
    艾伟_转载:Cookie是什么?用法是怎样?与SESSION有什么区别?(二) 狼人:
    艾伟_转载:ASP.NET MVC 2博客系列之一:强类型HTML辅助方法 狼人:
  • 原文地址:https://www.cnblogs.com/zhrb/p/7830859.html
Copyright © 2011-2022 走看看