簡體   English   中英

在Java文件中特定位置的文本文件中寫一個單詞

[英]Write a word in a text file on a specific position in java

我正在編寫一個項目,其中我必須在文本文件中編寫來自MySQL數據庫的問題和標記(問題和標記位於數據庫的不同列中,但位於同一表中)。 在這里,我想在同一位置寫標記,即在每個問題之后垂直對齊。

我嘗試使用\\ t但無法獲得所需的輸出

while(myRs.next()) {
        String question = myRs.getString("question");
        String marks = myRs.getString("questionMarks");
        try {
        file.write(question+"\t\t\t\t\t\t\t" + marks + "\n");//write to text file
        }
        catch(Exception exe) {
            System.out.println(exe);
        }
        System.out.println("Q" + count +". " + question);
    }

所需的輸出是:

(單個“。”代表實際輸出中的空格,“ Question1”,“ Question2”,“ Question3”不是實際問題,而是語句)

Q1. Question1.............................4

Q2. Question2.............................4

Q3. Question3.............................5

實際輸出為:

Q1. Question1........................ 4

Q2. Question2................................4

Q3. Question3...........................5

您只需要計算問題的大小,然后將剩余空間添加到您喜歡的行大小即可。

有關重復字符的替代方法,請參見n次添加字符。

int maxlinesize = 40;
int count=0;

while(myRs.next()) {
    String question = myRs.getString("question");
    String marks = myRs.getString("questionMarks");
    count++;
    String q="Q"+count+" "+question;
    StringBuffer buffer = new StringBuffer();
    buffer.append(String.join(q, java.util.Collections.nCopies(maxlinesize - q.length(), " ")))
    .append(marks);
    try {
        file.write(buffer.toString()+ "\n");//write to text file
    }
    catch(Exception exe) {
        System.out.println(exe);
    }
}

正如Avi建議的那樣,只需將所有要寫入的問題存儲在ArrayList 另外,將標記存儲在另一個ArrayList 然后,找到最長的問題的字符串長度,並使用String.format寫入文本文件。 如下:

        ArrayList<String> question1 = new ArrayList<String>();
        ArrayList<Integer> marks1 = new ArrayList<Integer>();
        int maxLen = 0;
        while(myRs.next()) {
            String question = myRs.getString("question");
            Integer marks = myRs.getInt("questionMarks");
            question1.add(question);
            marks1.add(marks);
            for(int i = 0; i < question1.size(); i++) {
                if(question1.get(i).length() > maxLen) {
                    maxLen = question1.get(i).length();

                }
            }
            int index = 0;

            try {

                file.write("Q" + count + ". " + String.format("%-"+(1+maxLen)+"s%d\n", question1.get(index), marks1.get(index)));
            }
            catch(Exception exe) {
                System.out.println(exe);
            }

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM