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

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

讓 JavaBean 寫入 XML 時(shí)遇到問題

讓 JavaBean 寫入 XML 時(shí)遇到問題

倚天杖 2024-01-28 16:29:41
我的代碼將名稱寫入 XML 文檔,但不寫入任何測(cè)試分?jǐn)?shù)。即使我改了名字,考試成績(jī)也總是輸出0。我將非常感謝任何幫助弄清楚為什么會(huì)出現(xiàn)這種情況的幫助。我已附加帶有 main 方法的類和帶有構(gòu)造函數(shù)的類。感謝您的幫助!import java.beans.XMLDecoder;import java.beans.XMLEncoder;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;public class Studentp194Runner {public static void main(String[] args){               Studentp194 s1 = new Studentp194();    Scanner reader = new Scanner(System.in);    System.out.print("Enter student name: ");    s1.setName(reader.nextLine());    System.out.print("Enter the student's first score: ");    s1.setScore(1, reader.nextInt());    System.out.print("Enter the student's second score: ");    s1.setScore(2, reader.nextInt());    System.out.print("Enter the student's third score: ");    s1.setScore(3, reader.nextInt());    try    {        FileOutputStream fos = new FileOutputStream(new File("./student.xml"));        XMLEncoder encoder = new XMLEncoder(fos);        encoder.writeObject(s1);        encoder.close();        fos.close();    }    catch(IOException ex)    {        ex.printStackTrace();    }    try    {        FileInputStream fis = new FileInputStream(new File("./student.xml"));        XMLDecoder decoder = new XMLDecoder(fis);        Studentp194 p2 = (Studentp194)decoder.readObject();        decoder.close();        fis.close();        System.out.println("Student 1 name: " + p2.getName());        System.out.println("Test 1: " + p2.getScore(1));        System.out.println("Test 2: " + p2.getScore(2));        System.out.println("Test 3: " + p2.getScore(3));    }    catch(IOException ex)    {        ex.printStackTrace();    }   }}
查看完整描述

1 回答

?
catspeake

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

最簡(jiǎn)短的答案在技術(shù)上是正確的,但對(duì)于不熟悉 Java bean 的人來說毫無用處:Studentp194沒有score屬性。因此,不存在的score屬性不會(huì)被 編碼為 XML?XMLEncoder。


對(duì)于任何具有名為 、foo類型為 的Java Beans 屬性的任意類Foo,它必須有一個(gè)public Foo getFoo()方法和一個(gè)public void setFoo(Foo foo)方法。正如你所看到的,你的Studentp194類沒有public int getScore()方法,也沒有方法public void setScore(int score)

(當(dāng)然,Java Beans 規(guī)范實(shí)際上并不強(qiáng)制要求這些是方法所需的名稱。您可以通過多種方式自定義它們,包括使用 classes?BeanInfo,但這遠(yuǎn)遠(yuǎn)超出了本問題的范圍。)

回到你的問題和代碼,XMLEncoder不會(huì)對(duì)你的類設(shè)計(jì)有幫助,因?yàn)槟愕?code>getScore方法需要參數(shù),并且你的setScore方法需要多個(gè)參數(shù)。因此它們不是 Java Beans 屬性;而是 Java Beans 的屬性。因此XMLEncoder不會(huì)對(duì)它們進(jìn)行編碼。

假設(shè)您出于某種原因想要繼續(xù)使用XMLEncoder.然后您必須重構(gòu)您的類以符合 Java Beans 規(guī)范。我將把它作為練習(xí)留給讀者。 :-)

我猜這是某種作業(yè),而使用XMLEncoder是作業(yè)的要求。如果我錯(cuò)了,請(qǐng)查看不同的文件格式來存儲(chǔ)和檢索您的信息。

Studentp194如果我是對(duì)的,那么您想要查看您的班級(jí)在邏輯上與分?jǐn)?shù)集合或數(shù)組相關(guān)聯(lián)的事實(shí)。您可能希望實(shí)際創(chuàng)建一個(gè)類來表示測(cè)試分?jǐn)?shù),并將此類測(cè)試分?jǐn)?shù)的集合存儲(chǔ)在您的Studentp194類中。更好的是,也許您的Studentp194類希望與另一個(gè)類相關(guān),例如Transcript可以正確存儲(chǔ)此信息的類或類似的類。有關(guān)這種分解問題的分解方法的更多信息,請(qǐng)閱讀“第三范式”并從那里開始。我希望這對(duì)您有所幫助,歡迎來到 StackOverflow。


查看完整回答
反對(duì) 回復(fù) 2024-01-28
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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