PTA上提交Java程序的一些套路

  • 5.1 System.out.println(“abc”)打印字符串"abc"并回车换行。可使用+号连接各个类型的变量,组装成字符串。

  • 5.2 System.out.print(“abc”)打印字符串"abc",不打印回车换行。

  • 5.3 格式化输出:

  • 6.动态创建数组与ArrayList

  • 7.常见问题

  • 7.1 本机编译通过的Java程序,在PTA上提示编译错误或者直接无法运行

  • 7.2 本机运行正确的代码放到PTA上提交提示“答案错误”或”格式错误”。

  • 7.3 nextLine与其他next***混用的坑

  • 7.4 重复创建Scanner对象

  • 7.5 控制台如何跳出无限循环?

  • 7.6 程序中包含多个类怎么提交?

  • 7.7 输入用例数据量太大,造成超时怎么办?

  • 8. Java语法练习题集PTA分享码

  • 文章更新记录

  • 20210411更新

  • 201708新版改版说明

PTA提交Java程序需要注意如下几个要点:

0. 不要包含package关键字

==================

提交的代码中一定不要包含package关键字。

1. Main类与Scanner

=================

1.1 Main类


你提交的所有程序都应该以如下形式出现

public class Main{

public static void main(String[] args){

//其他代码

}

}

即,代码中必须存在一个public class Main。不允许出现其他的public class

1.2 使用Scanner处理输入


Java中使用Scanner处理输入。你需要注意如下几个地方

  • 程序开头必须import java.util.Scanner导入Scanner类。

  • 使用Scanner sc = new Scanner(System.in);生成scanner对象。

该Scanner对象sc可以处理标准输入。所谓的标准输入,在你的电脑上就是你从键盘通过控制台进行的输入。注意:字符串本身,也可被Scanner对象处理,如下代码就可以处理字符串:

String str = “1 a 3.0”;

Scanner sc = new Scanner(str);

//现在就可以通过sc来处理字符串str,比如将其中的每个字符取出来。

int x = sc.nextInt(); //将字符串中的1读出来,并转化为int型

String y = sc.next(); //将字符串中的a读出来,是String型

double z = sc.nextDouble(); //将字符串中的3.0读出来,并转化为double型

示例程序1:不断读入字符并转化为int然后相加,直到没有输入为止

import java.util.Scanner;//导入Scanner类

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);//生成Scanner对象

while (sc.hasNextInt()) {

int a = sc.nextInt(); //读下一个整型字符串

int b = sc.nextInt();

System.out.println(a + b);

}

sc.close(); //用完后关闭扫描器是一个好的习惯

}

}

while (sc.hasNextInt())这个语句的含义是指,当标准输入的下一个标记是整型则继续处理,直到没有输入为止。

如果输入1 2 3 4 a,那么只能处理前面的1、2、3、4。在处理a时跳出,因为a不是整型字符串。

根据需要也可将sc.hasNextInt()改成sc.hasNext(),可用来判断是否还有下一个输入标记(不管是不是int)。使用sc.next()获取下一个输入标记(String型)。**注意:**尽量不要使用while(true)的方式来处理多次输入,否则在PTA系统中有可能出错。

示例程序2:不断读入字符(以行的方式读取),直到碰到end为止

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);//生成Scanner对象

String x = sc.nextLine();

while (!x.equals(“end”)) {

System.out.println(x);

x = sc.nextLine();

}

sc.close(); //用完后关闭扫描器是一个好的习惯

}

}

示例程序3:读入n,然后循环读入n行数据

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);//生成Scanner对象

int n = sc.nextInt();

for(int i = 0; i < n; i++){

//接下来处理一行输入,比如一行的数据为"zhang 18"

String name = sc.next();

int age = sc.nextInt();

//然后对name、age进行处理

}

sc.close(); //用完后关闭扫描器是一个好的习惯

}

}

Scanner如何处理字符串中每个标记?

Scanner在处理字符串对象时,如果使用next函数,默认以空格、多个空格或者回车换行符作为分隔。比如上面这段程序,当我们输入为

1x 2y

或者

1x

2y

Scanner将输入分解成两个标记1x和2y。

本机上如何快速测试?

  • 打开记事本(Notepad)。

  • 复制输入样例中的数据到记事本。注:如果每行数据之间有不应该出现的空行,请先删除空行。

  • 全选复制(Ctrl+a, Ctrl+c)记事本的数据。注:为了将最后一行数据后面的回车换行也复制上。

  • 运行程序后,在控制台粘贴(Ctrl+v)。

2.Scanner对象常用方法

===============

hasNext() //返回true或false,看有无下一个标记(字符串类型)。

比如对于a b c,现在处理到a,那么下一个标记就是b。next() //返回类型为String(字符串),返回下一个标记。不会读取回车换行。hasNextInt() //返回true或false,看有无下一个整型字符串标记。nextInt() //返回类型int,将下一个整型字符串标记转化为int型返回。nextBoolean() //返回类型为boolean,可以处理字符串true或者false,nextDouble() //返回类型为double,可以处理字符串如1 2.3 -1.3等。nextLine() //返回类型为String(字符串对象),返回一整行。会读取回车换行符。

3.字符串与整型互相转换

============

常用处理代码

String str = sc.nextLine();

int numStu = Integer.parseInt(str);

//也可使用如下代码

int num = sc.nextInt(); //字符串->整型

String x = num+“”; //整型->字符串,其中""为空字符串。任何基本类型数据与字符串+,都将转化为字符串。

也可以使用Double.parseDouble处理double类型数据,还有Long, Boolean等对象均有相似方法。

4.Scanner常见问题

=============

该部分内容统一移到文章尾部的常见问题章节。

5.输出

====

5.1 System.out.println("abc")打印字符串"abc"并回车换行。可使用+号连接各个类型的变量,组装成字符串。


int x = 1;

String str = “abc”;

System.out.println(x+2+“-”+str); //输出12-abc。即,可以使用+拼接各个类型的变量,转化为字符串

5.2 System.out.print("abc")打印字符串"abc",不打印回车换行。


5.3 格式化输出:


代码:System.out.printf("%d,%.3f,%5s,%b,80%%,end%n",123,3.141592654,"abcdef",true);输出:123,3.142,abcdef,true,80%,end说明:%d,按十进制整数格式输出。%.3f,输出浮点数保留3位小数。%-5s,按字符串格式输出,输出宽度为5。如果超过5个字符,则鸳鸯输出。如果为不足5个字符,右方填充空格。%5s,左方填充空格。%b,按boolean型格式输出。%%,输出%。%n,输出行分隔符,如回车换行。

更多格式字符用法请查看API文档中Formatter类的格式字符串语法节。

6.动态创建数组与ArrayList

==================

有的时候需要动态创建一个数组来存放输入的数据。

int n = sc.nextInt();

int[] arr = new int[n];//动态创建大小为n的数组

for(int i = 0; i < n; i++){

arr[i] = sc.nextInt();

}

如果待输入的数据不确定,无法一开始就确定数组的大小。我们可以使用ArrayList代替数组。

List strList = new ArrayList();//Java 7中可以List strList = new ArrayList<>();

while(sc.hasNextLine()){

strList.add(sc.nextLine());

}

//遍历输出列表中的内容

for (int i = 0; i < strList.size(); i++) {

String str = strList.get(i);

System.out.println(str);

}

//或者

for(String e: strList){

System.out.println(e);

}

7.常见问题

======

7.1 本机编译通过的Java程序,在PTA上提示编译错误或者直接无法运行


  • 提交的public class类名不为Main,比如,提交的类名如果是public class Main1就会出错。

  • 提交的代码中有多个public class。注意:提交的代码中只能有一个public class

  • 复制的时候将程序第一行package也复制进来。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
4年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-NBDqmLsS-1715875943685)]

[外链图片转存中…(img-1pRCPvgd-1715875943685)]

[外链图片转存中…(img-DF1om9MZ-1715875943685)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7-1 jmu-java-01入门-第一个ptaJava程序是一个关于学习Java编程的题目。在这个题目中,我们需要编写一个简单的Java程序。 这个程序要求实现一个功能,即能够输出"Hello Java!"这句话。实现这个功能很简单,只需要使用Java的输出语句System.out.println("Hello Java!");就可以了。 编写这个程序的步骤如下: 1. 打开编程软件,比如Eclipse或者IntelliJ IDEA等。创建一个Java项目。 2. 在项目的src目录下创建一个新的Java类。 3. 在这个Java类中,编写主函数public static void main(String[] args)。 4. 在主函数中,添加一行代码System.out.println("Hello Java!");,这行代码的作用是输出"Hello Java!"这句话。 5. 运行这个程序,可以看到控制台输出了"Hello Java!"这句话。 这个题目的目的是帮助我们熟悉Java的编程环境,并且学会使用基本的输出语句。虽然这个程序很简单,但是它对于初学者来说是一个很好的入门练习。 在学习编程的过程中,我们会遇到很多类似的题目,通过完成这些题目,我们可以不断熟悉各种编程语言的语法和特性,提高我们的编程能力。而且,通过编写简单的程序,我们还能够培养我们的逻辑思维能力和解决问题的能力。 总之,7-1 jmu-java-01入门-第一个ptaJava程序是一个帮助我们学习Java编程的题目,通过完成这个题目,我们可以学会使用Java的输出语句,熟悉Java的编程环境,提高我们的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值