日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【PTA】JAVA提交的一些注意点

發(fā)布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【PTA】JAVA提交的一些注意点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在PTA提交Java程序需要注意如下幾個要點:

文章目錄

  • 0. 不要包含package關(guān)鍵字
  • 1. Main類與Scanner
    • 1.1 Main類
    • 1.2 使用Scanner處理輸入
  • 2.Scanner對象常用方法
  • 3.字符串與整型互相轉(zhuǎn)換
  • 4.Scanner常見問題
  • 5.輸出
    • 5.1 `System.out.println("abc")`打印字符串"abc"并回車換行??墒褂?#96;+`號連接各個類型的變量,組裝成字符串。
    • 5.2 `System.out.print("abc")`打印字符串"abc",不打印回車換行。
    • 5.3 **格式化輸出:**
  • 6.動態(tài)創(chuàng)建數(shù)組與ArrayList
  • 7.常見問題
    • 7.1 本機編譯通過的Java程序,在PTA上提示編譯錯誤或者直接無法運行
    • 7.2 本機運行正確的代碼放到PTA上提交提示“答案錯誤”或”格式錯誤”。
    • 7.3 nextLine與其他next***混用的坑
    • 7.4 重復(fù)創(chuàng)建Scanner對象
    • 7.5 控制臺如何跳出無限循環(huán)?
    • 7.6 程序中包含多個類怎么提交?

0. 不要包含package關(guān)鍵字

提交的代碼中一定不要包含package關(guān)鍵字。

1. Main類與Scanner

1.1 Main類

你提交的所有程序都應(yīng)該以如下形式出現(xiàn)

public class Main{public static void main(String[] args){//其他代碼} }

即,代碼中必須存在一個public class Main。不允許出現(xiàn)其他的public class。

1.2 使用Scanner處理輸入

Java中使用Scanner處理輸入。你需要注意如下幾個地方

  • 程序開頭必須import java.util.Scanner導(dǎo)入Scanner類。
  • 使用Scanner sc = new Scanner(System.in);生成scanner對象。
    該Scanner對象sc可以處理標準輸入。所謂的標準輸入,在你的電腦上就是你從鍵盤通過控制臺進行的輸入。注意:字符串本身,也可被Scanner對象處理,如下代碼就可以處理字符串:
String str = "1 a 3.0"; Scanner sc = new Scanner(str); //現(xiàn)在就可以通過sc來處理字符串str,比如將其中的每個字符取出來。 int x = sc.nextInt(); //將字符串中的1讀出來,并轉(zhuǎn)化為int型 String y = sc.next(); //將字符串中的a讀出來,是String型 double z = sc.nextDouble(); //將字符串中的3.0讀出來,并轉(zhuǎn)化為double型

示例程序1:不斷讀入字符并轉(zhuǎn)化為int然后相加,直到?jīng)]有輸入為止

import java.util.Scanner;//導(dǎo)入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(); //用完后關(guān)閉掃描器是一個好的習(xí)慣} }

while (sc.hasNextInt())這個語句的含義是指,當標準輸入的下一個標記是整型則繼續(xù)處理,直到?jīng)]有輸入為止。
如果輸入1 2 3 4 a,那么只能處理前面的1、2、3、4。在處理a時跳出,因為a不是整型字符串。
**注意:**盡量不要使用while(true)的方式來處理多次輸入,否則在PTA系統(tǒng)中有可能出錯。

示例程序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(); //用完后關(guān)閉掃描器是一個好的習(xí)慣} }

示例程序3:讀入n,然后循環(huán)讀入n行數(shù)據(jù)

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++){//接下來處理一行輸入,比如一行的數(shù)據(jù)為"zhang 18"String name = sc.next();int age = sc.nextInt();//然后對name、age進行處理}sc.close(); //用完后關(guān)閉掃描器是一個好的習(xí)慣} }

Scanner如何處理字符串中每個標記?
Scanner在處理字符串對象時,如果使用next函數(shù),默認以空格、多個空格或者回車換行符作為分隔。比如上面這段程序,當我們輸入為

1x 2y

或者

1x 2y

Scanner將輸入分解成兩個標記1x和2y。

本機上如何快速測試?

  • 打開記事本(Notepad)。
  • 復(fù)制輸入樣例中的數(shù)據(jù)到記事本。注:如果每行數(shù)據(jù)之間有不應(yīng)該出現(xiàn)的空行,請先刪除空行。
  • 全選復(fù)制(Ctrl+a, Ctrl+c)記事本的數(shù)據(jù)。注:為了將最后一行數(shù)據(jù)后面的回車換行也復(fù)制上。
  • 運行程序后,在控制臺粘貼(Ctrl+v)。

2.Scanner對象常用方法

hasNext() //返回true或false,看有無下一個標記(字符串類型)。
比如對于a b c,現(xiàn)在處理到a,那么下一個標記就是b。
next() //返回類型為String(字符串),返回下一個標記。不會讀取回車換行。
hasNextInt() //返回true或false,看有無下一個整型字符串標記。
nextInt() //返回類型int,將下一個整型字符串標記轉(zhuǎn)化為int型返回。
nextBoolean() //返回類型為boolean,可以處理字符串true或者false,
nextDouble() //返回類型為double,可以處理字符串如1 2.3 -1.3等。
nextLine() //返回類型為String(字符串對象),返回一整行。會讀取回車換行符。

3.字符串與整型互相轉(zhuǎn)換

常用處理代碼

String str = sc.nextLine(); int numStu = Integer.parseInt(str); //也可使用如下代碼 int num = sc.nextInt(); //字符串->整型 String x = num+""; //整型->字符串,其中""為空字符串。任何基本類型數(shù)據(jù)與字符串+,都將轉(zhuǎn)化為字符串。

也可以使用Double.parseDouble處理double類型數(shù)據(jù),還有Long, Boolean等對象均有相似方法。

4.Scanner常見問題

該部分內(nèi)容統(tǒng)一移到文章尾部的常見問題章節(jié)。

5.輸出

5.1 System.out.println("abc")打印字符串"abc"并回車換行??墒褂?#43;號連接各個類型的變量,組裝成字符串。

int x = 1; String str = "abc"; System.out.println(x+2+"-"+str); //輸出12-abc。即,可以使用+拼接各個類型的變量,轉(zhuǎn)化為字符串

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,按十進制整數(shù)格式輸出。%.3f,輸出浮點數(shù)保留3位小數(shù)。
%-5s,按字符串格式輸出,輸出寬度為5。如果超過5個字符,則鴛鴦輸出。如果為不足5個字符,右方填充空格。%5s,左方填充空格。
%b,按boolean型格式輸出。
%%,輸出%。
%n,輸出行分隔符,如回車換行。
更多格式字符用法請查看API文檔中Formatter類的格式字符串語法節(jié)。

6.動態(tài)創(chuàng)建數(shù)組與ArrayList

有的時候需要動態(tài)創(chuàng)建一個數(shù)組來存放輸入的數(shù)據(jù)。

int n = sc.nextInt(); int[] arr = new int[n];//動態(tài)創(chuàng)建大小為n的數(shù)組 for(int i = 0; i < n; i++){arr[i] = sc.nextInt(); }

如果待輸入的數(shù)據(jù)不確定,無法一開始就確定數(shù)組的大小。我們可以使用ArrayList代替數(shù)組。

List<String> strList = new ArrayList<String>();//Java 7中可以List<String> strList = new ArrayList<>(); while(sc.hasNextLine()){strList.add(sc.nextLine()); }//遍歷輸出列表中的內(nèi)容 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。
  • 復(fù)制的時候?qū)⒊绦虻谝恍衟ackage也復(fù)制進來。
  • 提交的代碼中出現(xiàn)中文。注意:提交的代碼中任何時候都不要出現(xiàn)中文,注釋也不要出現(xiàn)中文。
  • PTA上的Java暫時為Java 6,如果用Java7或8的語法可能會出錯。最新版的PTA使用Open JDK 8,已經(jīng)支持Java 8。估計還不支持Java 9,請不要用Java 9中的新語法。注意:中國大學(xué)mooc網(wǎng)的程序評測平臺可能僅支持Java 6。

7.2 本機運行正確的代碼放到PTA上提交提示“答案錯誤”或”格式錯誤”。

  • 確定使用前面提到的本機上如何快速測試的方法進行測試,請仔細比對樣例輸入與輸出。
  • 你的代碼輸出確實有誤。題庫中的集美大學(xué)Java題集的題目已經(jīng)經(jīng)過上百次有效提交,一般不會有錯,請仔細核對。**核對方法:**將樣例輸出放到屏幕左側(cè),你的程序輸出放到右側(cè),逐行對比。
  • 顯示格式錯誤,一般是因為你的輸出最后一行少了回車換行,或者每行的行尾多了空格之類的錯誤。

7.3 nextLine與其他next***混用的坑

此坑非??印=ㄗh所有人仔細閱讀。

for (int i = 0; i < 3; i++) { int x = sc.nextInt();String str = sc.nextLine();System.out.println("x="+x+" str="+str); }

當我們輸入1并按回車的時候,就直接輸出x=1 str=。可以看到sc.nextLine()并沒有讀取到任何東西。
實際上它讀取了1后面的回車換行符。我們應(yīng)將其改為sc.next()。
結(jié)論:當題目要求中一會要輸入數(shù)字、一會又要輸入字符,一會又要整行讀取。不要混合使用nextInt(),next(),nextLine()方法。不妨全部使用nextLine()整行讀入后,再進行處理。
其他:對于這個問題,我在PTA題庫中創(chuàng)建了1題jmu-Java-01入門-使用Scanner處理輸入,格式化輸出與String,主要用來考察Scanner處理輸入、格式化輸出、String的常見使用。歡迎大家使用。

7.4 重復(fù)創(chuàng)建Scanner對象

下面的代碼中存在一個非常典型的錯誤!!!

for (int i = 0; i < 3; i++) { Scanner sc = new Scanner(System.in);//沒有必要重復(fù)創(chuàng)建Scanner對象!運行時會導(dǎo)致結(jié)果不正確。int x = sc.nextInt();String str = sc.nextLine();System.out.println("x="+x+" str="+str); }

應(yīng)將Scanner sc = new Scanner(System.in);移到for循環(huán)外。
這個錯誤很有隱蔽性。學(xué)生自己在控制臺一個一個輸入的時候不會出錯,但是如果將多行輸入批量粘貼過來就無法得到正確結(jié)果

7.5 控制臺如何跳出無限循環(huán)?

按Ctrl+z或者強制終止程序。

7.6 程序中包含多個類怎么提交?

可以將多個類寫入一個文件。但只有Main類使用public修飾。

class Teacher{} public class Main{public static void main(String[] args) {} }

總結(jié)

以上是生活随笔為你收集整理的【PTA】JAVA提交的一些注意点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇太爽了 | 一二三区精品视频 | 欧美精品免费一区二区三区 | 久久伊人影视 | 香蕉二区| 美女打屁股网站 | 日韩在线视频播放 | 日韩亚洲影院 | 禁网站在线观看免费视频 | 先锋资源网av | 星空大象在线观看免费播放 | 色婷五月 | 老色批永久免费网站www | 少妇太爽了太深了太硬了 | 国产一级片免费视频 | 欧美日韩一区二区三区在线播放 | 日本中文字幕第一页 | 免费看的黄色录像 | 日本人妖网站 | 一区二区欧美在线 | 9i在线看片成人免费 | 亚洲黄色自拍 | 婷婷色六月 | 伊人看片 | 亚洲毛片在线 | 国产免费高清 | 手机在线精品视频 | 久久国产精品亚洲 | 2022精品国偷自产免费观看 | 亚洲欧美另类视频 | 久久久久久国产精品免费播放 | 奴性女会所调教 | 秋霞欧美视频 | 成人黄色网址在线观看 | 国产成人99久久亚洲综合精品 | 久久久久久18 | 青青青草视频在线观看 | 国产又粗又猛又黄又爽无遮挡 | 好爽又高潮了毛片 | 国产成人精品在线播放 | 午夜国产小视频 | 91成人国产综合久久精品 | 日韩精品人妻中文字幕 | 亚洲欧洲久久 | 吃奶摸下的激烈视频 | 人人插人人射 | 超碰夫妻| 超污视频在线观看 | a级黄色在线观看 | 插入综合网 | 国产成人精品综合久久久久99 | 久久97人妻无码一区二区三区 | 秋霞成人网 | av毛片精品 | 99久久久无码国产精品免费麻豆 | 1000部啪啪未满十八勿入超污 | 日本久久免费 | 特级西西444www高清大胆免费看 | 美女自拍偷拍 | 男人激烈吮乳吃奶爽文 | 日本黄频| 超碰在线免费 | 在线观看免费黄色 | av资源网站 | 欧美性猛交ⅹxx | 五月激情天 | 毛毛毛片 | 日韩久久精品电影 | 婷婷综合网站 | 最新av免费观看 | 国产精品久久免费视频 | 国产精品久久久久久久久绿色 | 国产大片中文字幕在线观看 | 伦乱天堂 | 四川操bbb | 中国白嫩丰满人妻videos | 精品爱爱| 免费看60分钟黄视频 | 久久亚洲一区二区三区四区五区 | 国产视频污在线观看 | 老公吃小头头视频免费观看 | 成人xxx| 久久人人爽人人爽人人片av免费 | 欧美激情一区二区 | 日本精品一区二区三区在线观看 | 国产欧美日韩中文字幕 | 亚洲欧美精品一区二区 | 69av片| 成人久久久久久久 | 男女啪动最猛动态图 | 91精品一区二区三区四区 | 8x8ⅹ8成人免费视频观看 | 欧美xxxx中国| 亚洲色图一区二区 | 中文字幕人妻熟女在线 | 欧美在线视频你懂的 | 91麻豆成人精品国产 | 欧美精品色婷婷五月综合 | 18无套直看片红桃 |