繁体   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