2017-06-06 14 views
2

私はJavaの初心者で、まず整数の総数と次に整数の合計を入力する必要があるコードを扱っています。例入力は次のとおりです。Java:末尾の空白を印刷

4 
1 4 3 2 

コードは次のように第2の入力を逆にする必要があります。

2 3 4 1 

私のソリューションは以下の通りです:

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int n = in.nextInt(); 
    int arr[] = new int[n]; 
    for(int arr_i=0; arr_i < n; arr_i++){ 
     arr[arr_i] = in.nextInt(); 
    } 
    for(int reverse_i=n-1; reverse_i>=0; reverse_i--){ 
     System.out.print(arr[reverse_i]); 
      if(reverse_i != 0){System.out.print(" ");} 
    } 
} 

私の質問はに関連しています印刷された数字の間に空白スペースを追加するコード "#:。私はこれを行うために他にどのような方法が使えるのだろうか?ご意見ありがとうございます。

+0

を追加しないでください、あなたがしようとしている方法は、正常に動作します私は私の質問をしてくださいdownvotedされている理由最初 –

+1

@私が知っているかもしれないことがわかりdidntは申し訳ありませんと仮定? – yogescicak

+0

笑私は2 downvotesであなたのシニアになった。私は答えるべきではない – bharath

答えて

2

文字列を逆にする簡単な方法はStringBuilderクラスを使用する方法の例です最後の文字を削除

package stackoverflow.main; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int n = in.nextInt(); 

     StringBuilder sb = new StringBuilder(); 

     for(int arr_i = 0; arr_i < n; arr_i++){ 
      sb.append(in.nextInt()); 
      sb.append(" "); 
     } 

     sb.deleteCharAt(sb.length() - 1); 

     String normal = sb.toString(); 
     String reversed = sb.reverse().toString(); 

     System.out.println("normal: " + normal); 
     System.out.println("reversed: " + reversed); 
    } 
} 

別のオプションは、あなたのループの最後arr_iであるかどうかを確認することです。 もしそうなら、スペースに

package stackoverflow.main; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int n = in.nextInt(); 

     StringBuilder sb = new StringBuilder(); 

     for(int arr_i = 0; arr_i < n; arr_i++){ 
      sb.append(in.nextInt()); 
      if (arr_i != 3 
       sb.append(" "); 
     } 

     String normal = sb.toString(); 
     String reversed = sb.reverse().toString(); 

     System.out.println("normal: " + normal); 
     System.out.println("reversed: " + reversed); 
    } 
} 
+0

ありがとう、私はStringBuilderを知らなかった。 – yogescicak

-1

すべての出力形式についてです。 this examplesを使用して、考えられるすべてのアプローチに慣れてください。

コードは、次の二つの方法で改善することができる。

1)\t代わりの空のスペース(\tが集計である)

2)このprivate static final String output = "%d "ような出力形式で定数を作成し、それを使用を使用し次のような出力行に表示されます。String.format(output, number)ここで、numberは印刷する番号です。

+0

こんにちは、私の提案に間違っていますか? –

+0

私はあなたの答えをdownvoteしませんでしたが、\ tが使用されるときに複数の " – yogescicak

+0

'\ t'はASCIIテーブルの' TAB'の単なる表現です。 1文字の費用がかかります。 –

0

まず、配列を反転してforループで印刷します。

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int n = in.nextInt(); 
     int arr[] = new int[n]; 
     for(int arr_i=0; arr_i < n; arr_i++) 
     { 
      arr[arr_i] = in.nextInt(); 
     } 
     for(int i = 0; i < arr.length/2; i++) 
     { 
      int temp = arr[i]; 
      arr[i] = arr[arr.length - i - 1]; 
      arr[arr.length - i - 1] = temp; 
     }  
     for(int i = 0; i < arr.length; i++) 
     { 
      System.out.print(arr[i]+" "); 
     } 
    } 
} 
0

あなたはif文を避けるために、代わりにこのソリューションを使用することができます。

String space = ""; 
for (int reverse_i = n - 1; reverse_i >= 0; reverse_i--) { 
    System.out.print(space + arr[reverse_i]); 
    space = " "; 
} 

だから、最初の反復はスペースなし(空の区切り文字)を印刷し、その後、最初の反復の後には、スペースを出力しますその後、これはあなたの問題を解決することができます。

1つのオプションは、文字列などの末尾にスペースを削除することです。ここでは

はこの言葉

1    
1 + space + 2 
1 + space + 2 + space + 3 
1 + space + 2 + space + 3 + space + 4 
+0

ありがとうございますが、私はこの解決策が最後の数字の最後に ""後に続くと思いますか? – yogescicak

+0

NOPE @misaikucingこれは正しくない、試してみてください;) –

+0

@misaikucing今私の例を確認してください、もっと分かります –

関連する問題