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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java FileInputStream 問題(額外的空白)

Java FileInputStream 問題(額外的空白)

拉風(fēng)的咖菲貓 2023-06-14 10:41:30
當(dāng)我使用 FileInputStream 從我的 spawn.txt 文件中為基于圖塊的地圖輸入文本時(shí),它會(huì)在每行之間添加額外的空白。package mapInit;import java.io.FileInputStream;public class SpawnMap {? ? static char[][] spawnWorld = new char[30][30];? ? public static void main(String[] args) {? ? ? ? try {? ? ? ? ? ? FileInputStream spawn = new FileInputStream("Resources/Map/spawn.txt");? ? ? ? ? ? int i = 0;? ? ? ? ? ? int h = 0;? ? ? ? ? ? int k = 0;? ? ? ? ? ? while((i=spawn.read())!=-1){? ? ? ? ? ? ? ? if(h == 30) {? ? ? ? ? ? ? ? ? ? h = 0;? ? ? ? ? ? ? ? ? ? k++;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? spawnWorld[k][h] = (char)i;? ? ? ? ? ? ? ? h++;? ? ? ? ? ? }? ? ? ?? ? ? ? ? ? spawn.close();? ? ? ? } catch (Exception e) {? ? ? ? }? ? ? ? for (int i=0; i<30; i++) {?? ? ? ? ? ? for (int j=0;j<30;j++) {?? ? ? ? ? ? ? ? System.out.println(spawnWorld[i][j]);?? ? ? ? ? ? }?? ? ? ? }? ? }}這是輸出循環(huán)的結(jié)果:這是文本文件的圖片:
查看完整描述

4 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為Scannerclass 它更適合你的任務(wù)

Java 中的掃描器類位于 java.util 包中。Java 提供了多種讀取鍵盤輸入的方法,java.util.Scanner 類就是其中之一。

Java Scanner 類使用默認(rèn)為空白的定界符將輸入分解為標(biāo)記。它提供了許多方法來讀取和解析各種原始值。

Java Scanner 類廣泛用于使用正則表達(dá)式解析字符串和原始類型的文本。這是在 Java 中獲取輸入的最簡(jiǎn)單方法。借助 Java 中的 Scanner,我們可以從用戶那里獲取原始類型的輸入,例如 int、long、double、byte、float、short 等。

Java Scanner 類擴(kuò)展了 Object 類并實(shí)現(xiàn)了 Iterator 和 Closeable 接口。

Java Scanner類提供nextXXX()方法返回值的類型,如nextInt()、nextByte()、nextShort()、next()、nextLine()、nextDouble()、nextFloat()、nextBoolean()等. 要從掃描儀獲取單個(gè)字符,可以調(diào)用返回單個(gè)字符的 next().charAt(0) 方法。?

掃描器 Java 文檔

public static void main(String arg[]) {


? ? try (Scanner sc = new Scanner(new File("Resources/Map/spawn.txt"))) {

? ? ? ? // Checking if sc has another token in the file

? ? ? ? while(sc.hasNext()) {

? ? ? ? ? ? // Print line

? ? ? ? ? ? System.out.println(sc.next());

? ? ? ? }


? ? } catch (Exception ex) {

? ? ? ? // Use a Logger to log exceptions in real projects

? ? ? ? ex.printStackTrace();

? ? }

}

您也可以使用Apache Commons IO庫


? ? ? <dependency>

? ? ? ? <groupId>commons-io</groupId>

? ? ? ? <artifactId>commons-io</artifactId>

? ? ? ? <version>2.5</version>

? ? ? </dependency>



? ? import org.apache.commons.io.FileUtils;

? ? import java.io.File;

? ? import java.io.IOException;

? ? import java.util.List;


? ? public class ReadTextFile {


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


? ? ? ? ? ? try {? ? ? ?

? ? ? ? ? ? ? ? File f = new File("Resources/Map/spawn.txt");


? ? ? ? ? ? ? ? List<String> lines = FileUtils.readLines(f, "UTF-8");


? ? ? ? ? ? ? ? for (String line : lines) {

? ? ? ? ? ? ? ? ? ? System.out.println(line);

? ? ? ? ? ? ? ? }


? ? ? ? ? ? } catch (IOException e) {

? ? ? ? ? ? ? ? // Use a Logger to log exceptions in real projects

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }


? ? ? ? }? ? ? ??

? ? }


查看完整回答
反對(duì) 回復(fù) 2023-06-14
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

我看過你的代碼。似乎通過使用它我已經(jīng)檢測(cè)到通過使用 FileInputStream 它將在值之間產(chǎn)生一個(gè)空白空間。


static char[][] spawnWorld = new char[30][30];


public static void main(String[] args) {

    try {

        FileInputStream spawn = new FileInputStream("C:/Daniel/spawn.txt");

        int i = 0;

        int h = 0;

        int k = 0;

        while ((i = spawn.read()) != -1) {

            if (h == 30) {

                h = 0;

                k++;

            }

            spawnWorld[k][h] = (char) i;

            if (h == 19) System.out.println((char) i);

            System.out.println("[" + k + "][" + h + "] : " +  i);

            h++;

        }

        spawn.close();

    } catch (Exception e) {

        e.printStackTrace();

    }


    System.out.println("Start Printing");

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

        for (int j = 0; j < 30; j++) {

            System.out.println("[" + i + "][" + j + "] : " + spawnWorld[i][j]);

        }

    }


    System.exit(0);

}

從那時(shí)起,您可以相應(yīng)地調(diào)試它。在第 19 行,您的“i”返回一個(gè)空格或字符值 i。我建議改用掃描儀作為讀取文件的方式。


查看完整回答
反對(duì) 回復(fù) 2023-06-14
?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

System.out.println循環(huán)內(nèi)部更改為 just?System.out.print。

System.out.println每次都會(huì)自動(dòng)添加一個(gè)換行符,即使你只打印一個(gè)字符。?System.out.print將接受String您傳入的內(nèi)容,并按原樣打印。

此外,除非是故意的,否則請(qǐng)確認(rèn)您沒有\n在每行末尾打?。〒Q行符)。如果你真的想在每一行的末尾開始一個(gè)新行,只需System.out.println();在最內(nèi)層循環(huán)結(jié)束后放一行。


查看完整回答
反對(duì) 回復(fù) 2023-06-14
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

文本文件由一行中的字符組成,后跟行尾序列,通常是換行符或回車符后跟換行符。(這些也可以被認(rèn)為是行分隔符而不是行尾,最后一行可能不會(huì)跟一個(gè),這取決于文件的創(chuàng)建方式。)您正在逐個(gè)字符地讀取文件,但您沒有考慮這些行尾字符。


FileInputStream使用or沒有任何區(qū)別Scanner;問題是,您一次讀取文件一個(gè)字符,但不考慮回車和換行符。


例如:


while ((i=spawn.read()) != -1) {

    if (Character.isWhitespace((char)i)) {

        continue;

    }

    if (h == 30) {

        h = 0;

        k++;

    }

    spawnWorld[k][h] = (char)i;

    h++;

}


查看完整回答
反對(duì) 回復(fù) 2023-06-14
  • 4 回答
  • 0 關(guān)注
  • 237 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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