[英]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.