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

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

如何在Java中構(gòu)建一個(gè)讀取xml文件的構(gòu)造函數(shù)?

如何在Java中構(gòu)建一個(gè)讀取xml文件的構(gòu)造函數(shù)?

ibeautiful 2019-04-18 18:15:57
我正在用Java創(chuàng)建一個(gè)小板游戲,我想在XML文件中實(shí)現(xiàn)游戲關(guān)卡(即每個(gè)級(jí)別,關(guān)卡,關(guān)卡的高度和長(zhǎng)度,以及每個(gè)單元的定義),然后通過(guò)詢(xún)問(wèn)用戶(hù)他想要玩的等級(jí)來(lái)構(gòu)建棋盤(pán)。我已經(jīng)在Board類(lèi)中構(gòu)建了一個(gè)經(jīng)典的構(gòu)造函數(shù),沒(méi)有XML文件和if(因此我在代碼中放置了每個(gè)級(jí)別的描述)。問(wèn)題是,每次我想添加一個(gè)級(jí)別,我需要再次編譯。謝謝 !編輯:這是我當(dāng)前Board類(lèi)的代碼,帶有構(gòu)造函數(shù):public class Board {     private int h;     private int l;     private Cell[][] plateau;     Board(int level) {         if (level == 1) {             h=2;             l=2;             plateau = new Cell[h + 2][l + 2];             plateau[0 + 1][0 + 1] = new Cell(true, 1, 1, Couleurs.None, Couleurs.Blue, Couleurs.None, Couleurs.None);             plateau[1 + 1][0 + 1] = new Cell(true, 2, 1, Couleurs.Red, Couleurs.None, Couleurs.None, Couleurs.None);             plateau[0 + 1][1 + 1] = new Cell(true, 1, 2, Couleurs.None, Couleurs.Red, Couleurs.None, Couleurs.None);             plateau[1 + 1][1 + 1] = new Cell(true, 2, 2, Couleurs.Blue, Couleurs.None, Couleurs.None, Couleurs.None);         }我構(gòu)建的XML文件:<?xml version="1.0" encoding="UTF-8"?><Levels>     <Level id="1">     <h>2</h>     <l>2</l>         <description>         plateau[0 + 1][0 + 1] = new Cell(true, 1, 1, Couleurs.None, Couleurs.Blue, Couleurs.None, Couleurs.None);         plateau[1 + 1][0 + 1] = new Cell(true, 2, 1, Couleurs.Red, Couleurs.None, Couleurs.None, Couleurs.None);         plateau[0 + 1][1 + 1] = new Cell(true, 1, 2, Couleurs.None, Couleurs.Red, Couleurs.None, Couleurs.None);         plateau[1 + 1][1 + 1] = new Cell(true, 2, 2, Couleurs.Blue, Couleurs.None, Couleurs.None, Couleurs.None);                 </description>     </Level></Levels>所以我想要的是Board類(lèi)讀取XML文件來(lái)構(gòu)建板。
查看完整描述

2 回答

?
犯罪嫌疑人X

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

簡(jiǎn)短回答:不要嘗試解析板構(gòu)造函數(shù)中的XML文件。

您似乎已經(jīng)有了一個(gè)有效的構(gòu)造函數(shù)和有效的類(lèi)來(lái)為您設(shè)置板。將這些類(lèi)傳遞給Board構(gòu)造函數(shù)。讓某種工廠為你創(chuàng)建實(shí)例。

不要將XML解析邏輯與Board游戲邏輯混合在一起。這是兩件完全不同的事情。根據(jù)單一責(zé)任規(guī)則,它應(yīng)該分開(kāi)。

如果操作正確,您應(yīng)該能夠在XML-File或任何其他來(lái)源的代碼中創(chuàng)建具有ad-hoc配置的電路板。換句話(huà)說(shuō):對(duì)于數(shù)據(jù)來(lái)源的董事會(huì)而言,這無(wú)關(guān)緊要。

XML文件看起來(lái)應(yīng)該更像這樣:

<Levels>
    <Level id="1">
    <h>2</h>
    <l>2</l>
    <plateau key="value">
      <cells>
        <cell row="0" column="0" color="black">
        </cell>
        <!-- ... -->
      </cells>
    </plateau>

使用XML解析器解析從文件中讀取數(shù)據(jù)。將結(jié)果傳遞給Board構(gòu)造函數(shù),例如偽代碼:

List<Level> levels = parseLevels(...);new Board(levels.get(0));

'parseLevels()'的實(shí)現(xiàn)可能很棘手。我建議您使用JAXB來(lái)解析文件并創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。試試這個(gè)教程:https: //www.baeldung.com/jaxb


查看完整回答
反對(duì) 回復(fù) 2019-05-15
?
紫衣仙女

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

看一下這個(gè)頁(yè)面,看看它是如何在Java中完成的: Java XML Parsers。Java中內(nèi)置了大約四種不同的解析器(可能在更新的版本中更多)。

現(xiàn)在關(guān)于構(gòu)造函數(shù):

public Board(String pathToXML) {
   // Add code parsing the XML}

在調(diào)用構(gòu)造函數(shù)之前,可以將參數(shù)作為參數(shù)發(fā)送到main方法。

public static void main(String[] args) {
    String pathToXML = args[0];
    Board b = new Board(pathToXML);}

請(qǐng)記住,參數(shù)從0開(kāi)始,而不是1。


查看完整回答
反對(duì) 回復(fù) 2019-05-15
  • 2 回答
  • 0 關(guān)注
  • 510 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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