2016-01-10 140 views
0

我在項目中遇到了一些麻煩。這個想法是,創建一個程序,它使用掃描儀掃描.txt文件,其中包含指示要使用哪種對齊方式的編號(1 =左對齊,2 =右對齊,3 =中央),輸入中的第二個數字是行的最大長度,第三個數字是單詞的計數,然後是文本。Java String Alignment

我做了簡單的程序來對齊文本左側,但不知道如何做正確的對齊和中央。

以下是案例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; 
      }            
     } 
    } 
}  

}

+0

歡迎來到StackOverflow!如果您在發佈問題之前確保儘可能地保證您的問題,那麼最好只能詢問具體問題。嘗試一些事情,一旦你被困在一個特定的任務,你應該更新這個問題來問。儘量避免讓人們爲你寫代碼。祝你好運,玩得開心:)。 – skyler

+0

謝謝:)這不是我的意圖,要求你爲我寫代碼,但我真的迷失在這裏... – javanoob

回答

0

首先你算算你有多少空間需要。

其次,您需要一種方法,將會添加所需的空間數量。

left align =在單詞後面添加空格。

right align =在單詞前添加空格。

center align =在前一半之後加上一半空間。

+0

謝謝,我明白了這一邏輯。現在我正在研究方法,計算所有的字母和空格以適合指定的長線,但是我無處可去。 – javanoob

+0

@javanoob你使用'.length()'來計算字母,因爲你已經在你的代碼中完成了,空格的數量是'widthNeeded - string.length()' –

+0

謝謝,我明白了,但它仍然不會將其餘的字放在其他行中,我的意思是,我不知道如何將20個字x 5個字母的文字分成4行,每行30個字符的空格... – javanoob

0

如果合適,請勿立即打印每個單詞。相反,建立一個線段表示法(例如使用StringBuilder),當線條已滿(或者用完輸入)時,您可以根據對齊情況計算您需要的前導空格的數量。

+0

我從來沒有使用它,但會考慮到StringBuilder。謝謝! – javanoob