【问题标题】:Java String AlignmentJava 字符串对齐
【发布时间】:2016-01-11 04:29:18
【问题描述】:

我的项目遇到了一些问题。这个想法是,创建一个程序,它使用扫描仪扫描 .txt 文件,其中包含指示要使用哪种对齐方式的数字(1 = 左对齐,2 = 右对齐 & 3 = 中心),输入中的第二个数字是行的最大长度,第三个数字是字数,然后是文本。

我做了简单的程序来将文本左对齐,但不知道如何做右对齐和居中。

这是案例 1 的代码(如果您建议进行一些修改或有更优雅的解决方案,我会很高兴)。非常感谢!

import java.util*
public class Align {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int command = sc.nextInt();
    int sumOfChar = 0;
    boolean First = true;
    switch (command) {
        case 1:    
        int maximumLength = sc.nextInt();
        int numberOfWords = sc.nextInt();
        for (int i = 0; i < numberOfWords; i++) {
            String word = sc.next();
            int a = word.length();
            sumOfChar = sumOfChar + a;
            if (First) {
                System.out.print(word);
                First = false;
            }
            else if (sumOfChar < maximumLength) {
                System.out.print(" "+word);
                sumOfChar++;
            }
            else {
                System.out.println();
                System.out.print(word);
                sumOfChar = a;
            }                                               
        }
    }
}    

}

【问题讨论】:

  • 欢迎来到 StackOverflow!最好在发布问题之前确保尽可能多地了解,以便您只能询问特定问题。尝试一些事情,一旦你被困在一个特定的任务上,你应该更新这个问题来问这个问题。尽量避免要求人们为您编写代码。祝你好运,玩得开心:)。
  • 谢谢 :) 我并不是要你为我编写代码,但我真的迷路了……

标签: java alignment


【解决方案1】:

首先你必须计算你需要多少空间。

其次你需要一个方法来增加所需的空间数。

左对齐 = 在单词后添加空格。

右对齐 = 在单词前添加空格。

居中对齐 = 前后各加一半。

【讨论】:

  • 谢谢,我明白了。现在我正在研究方法,计算所有字母和空格以适应指定的长行,但无处可去。
  • @javanoob 您使用.length() 来计算您在代码中已经完成的字母,空格数是widthNeeded - string.length()
  • 谢谢,我明白了,但它仍然没有将剩余的单词放在其他行中,我的意思是,我不知道如何将例如 20 个单词 x 5 个字母的文本分成4 行,每行 30 个字符...
  • @javanoob 所以你想要 4 行,每行 5 个单词,每行 30 个字符?使每个单词的所需长度为 6,并且每 5 个单词 println()。
【解决方案2】:

如果合适,不要立即打印出每个单词。相反,构建一个行表示(例如使用StringBuilder),当行已满(或者您的输入用完)时,您可以根据对齐方式计算需要多少前导空格。

【讨论】:

  • 我从未使用过它,但会研究 StringBuilder。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多