2016-09-03 13 views
-1

は私のJavaコードであります私が得る実際の出力は:私は出力と混乱しています:ここで

rohan 
kumar 
rohan 
kumar 
sharma 

Enterボタンを押すまで出力の最後のsharmaは表示されません。

質問

どのようにして所望の出力を得るために、私のコードを変更することができますか?

+3

タイトルが不十分です。問題を説明するものに編集してください。 –

+0

入力を3つの文字列にすると、出力は3つの文字列になります。出力で6弦をどうやって取得しましたか? –

+0

あなたはどのJavaバージョンを使用していますか? – iameven

答えて

3

あなたはStringBuilderにスキャン文字列を追加することができますし、最後よりも、あなたは以下のようにそれを印刷することができます。あなたはすべての新しい入力後にEnterキーを押ししたくない場合は

Scanner sc=new Scanner(System.in); 
StringBuilder sb = new StringBuilder(); 
for(int i=0;i<3;i++){ 
     String s=sc.next(); 
     sb.append(s+"\n"); 
} 
System.out.println(sb.toString()); 

使用sc.next() 。今、あなたはOよりも、コピーして端末へRohan kumar sharmaを貼り付ける場合

/pは次のようになります。

ロハン・クマールのシャルマ
ロハン
クマー
シャルマ

EDIT:

または、

Scanner sc=new Scanner(System.in); 
String str=""; 
for(int i=0;i<3;i++){ 
    String s=sc.next(); 
    str = str + s;  //append to a string instead of string buffer. 
} 
String a[] = str.split(" "); 
for(int i=0;i<a.length;i++){ 
    System.out.println(a[i]); 
} 

EDIT: をあなたもまた\nを追加し、その後str.split()を使用したくない場合は、次のように出力単一の文字列内の文字列と最後に、あなたは文字列を分割し、所望の出力を印刷することができ、 。以下を試してください:

Scanner sc=new Scanner(System.in); 
String str=""; 
for(int i=0;i<3;i++){ 
    String s=sc.next(); 
    str = str + s+"\n"; //Just string instead of string buffer. 
} 
System.out.println(str); 
+0

別の手段?ここでは1つのインスタンスしか使用していません。 @RohanSharma – Kaushal28

+0

申し訳ありませんが、StringBuilderを使用せずに、希望の出力を得る方法を教えてください。 –

+0

入力をスキャンして文字列配列に格納し、それを別のループから印刷することができます。 – Kaushal28

-2
package rohan; 

import java.util.*; 

public class Solution{ 
    public static void main(String[] args){ 
     Scanner sc = new Scanner(System.in); 

     String firstName = sc.nextLine(); 
     String middleName = sc.nextLine(); 
     String lastName = sc.nextLine(); 
     String fullName = null; 

     for(int i = 0; i < 3; i++) { 
      fullName = firstName + "\n" + middleName + "\n" + lastName; 
      System.out.println(fullName); 
     } 
    } 
} 
+1

ええ、それは3回印刷されます – emotionlessbananas

+0

forループが実行する回数を変更することができます。例えば、.for(int i = 0; i <2; i ++)は名前を2回出力します –

+2

説明なしのコードdoesn '誰も助けて!回答をより良くするために説明を追加してください – Li357

0

最後の入力行(シャーマ)にLF文字を追加する必要があります。

Scanner.nextLine()は入力からLF文字を取得したときに返します。最後のLF文字が見つからない場合、scanner.nextLine()は行末を待って保持します。

+0

あなたはもっと現実的な例を提供できますか? – emotionlessbananas

+1

コードでこれを詳しく説明してください。それは大きな助けになるでしょう –

+0

私はあなたのコードで以下の手順を試して、あなたが望む結果を得る 1.テキストエディタ(昇華)、 に入力をコピーする2.新しい行(空行)の最後にテキスト 3.コード を実行する4.テキストエディタからすべてのテキスト(4行)をコンソールにコピーする –

1

ここで、sc.nextLine()は入力行全体を読み込みます。コンソールから行ごとにデータを読み込み、配列に格納して後で使用することができます。

import java.util.*; 
public class Condition{ 
public static void main(String[] args){ 
    Scanner sc=new Scanner(System.in); 

    String[] strings = new String[3]; 

    for(int i=0;i<3;i++) { 
     String s=sc.nextLine(); 
     // System.out.println(s); 
     strings[i]=s; 
    } 

    for (String string : strings) { 
     System.out.println(string); 
     } 
    } 
} 
関連する問題