第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 掃描器、分隔符和行尾

Java 掃描器、分隔符和行尾

慕哥9229398 2023-12-13 16:40:26
我有一個數(shù)據(jù)文件,在多個連續(xù)行上有斜杠分隔的整數(shù)。這是我想用來讀取和打印所有這些整數(shù)的一小段代碼:import java.util.Scanner;import java.io.File;class Testing {   public static void main (String[] args) throws Exception {      Scanner file = new Scanner(new File("data.txt"));      file.useDelimiter("/");      while (file.hasNextInt())         System.out.println(file.nextInt());   }}數(shù)據(jù)文件一如下所示:1/2/34/5/6數(shù)據(jù)文件一的輸出如下所示:12數(shù)據(jù)文件二如下所示:1/2/3數(shù)據(jù)文件二的輸出如下所示:123有人可以解釋為什么我會出現(xiàn)這種行為嗎?特別是,為什么第一個示例忽略第一行數(shù)據(jù)末尾的“3”的存在?注意:我知道幾種“更好”的方法來獲得我想要的行為:一次讀取整行并使用 split() 和 parseInt(),一次讀取整行并將其轉(zhuǎn)換為單獨(dú)的 Scanner 對象,等等。這不是我的問題。我試圖理解為什么這段特定的代碼不能按預(yù)期工作——特別是,為什么當(dāng)文件有更多行時我得到的數(shù)據(jù)更少。
查看完整描述

3 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個贊

最后一個hasNextInt()將讀取帶有回車符的元素。即該元素將為3\r\n. 這顯然不是 int,因此它將無法通過測試file.hasNextInt()



查看完整回答
反對 回復(fù) 2023-12-13
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

當(dāng)它到達(dá)第 1 行末尾時,即值 3 之后,有一個“返回字符”,它不是整數(shù)。從那里開始,您對 hasNextInt() 的測試開始失敗。所以它最多只打印 3。即 1 2 3



查看完整回答
反對 回復(fù) 2023-12-13
?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊

行尾旁邊的 1hasNextInt()將返回 false,因?yàn)樗祷?\r\n,從而導(dǎo)致問題。


簡單的解決方案可以是 -


public static void main (String[] args) throws Exception {

      Scanner file = new Scanner(new File("test.txt"));

      file.useDelimiter("/");

      while (file.hasNext())

         System.out.println(file.next());

   }

輸出現(xiàn)在看起來像 -

1

2

3

4

5

6


查看完整回答
反對 回復(fù) 2023-12-13
  • 3 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號