2016-06-23 14 views
1

intとStrings(単語)の2つの配列があります。両方を並べ替えて、奇妙な場所では単語や偶数になるように印刷してください。1つのint配列と文字列配列を3番目の配列にマージする

これは私のコードです:私は出力を取得しています

import java.util.*; 
public class JavaApplication4 { 


    public static void main(String[] args) { 
     Scanner in=new Scanner(System.in); 
     int num[]=new int[10]; 
     String str[]=new String[10]; 
     String str1[]=new String[20]; 
     for(int i=0; i<5; i++)//for taking strings 
     { 
      str[i]=in.next(); 
     } 
     for(int i=0; i<5; i++)//for taking nums 
     { 
      num[i]=in.nextInt(); 
     } 
     for(int i=0; i<5; i++) 
     { 
      System.out.println("The String are "+str[i]); 
     } 
     for(int i=0; i<5; i++) 
     { 
      System.out.println("The num are "+num[i]); 
     } 
     for (int i = 0; i < 5; i++) //for sorting nums 
     { 
      for (int j = i + 1; j < 5; j++) 
      { 
       if (num[i]>(num[j])) 
       { 
        int temp = num[i]; 
        num[i] = num[j]; 
        num[j] = temp; 
       } 
      } 
     } 
     for (int i = 0; i < 5; i++)// for sorting strs 
     { 
      for (int j = i + 1; j < 5; j++) 
      { 
       if (str[i].compareTo(str[j])>0) 
       { 
        String temp = str[i]; 
        str[i] = str[j]; 
        str[j] = temp; 
       } 
      } 
     } 
     System.out.println("The sorted strings are:"); 
     for(int i=0; i<10; i++)//for merging both 
     { 
      if((i+1)%2==0) 
      { 
       int k=0; 
       str1[i]=String.valueOf(num[k]); 
       System.out.println("The String are "+str1[i]); 
       k++; 
      } 
      else 
      { 
       int j=0; 
       str1[i]=str[j]; 
       System.out.println("The String are "+str1[i]); 
       j++; 
      } 


     } 
     /* for(int i=0; i<10; i++) 
     { 
      System.out.println("The String are "+str1[i]); 
     } 
     */ 
    } 
} 

何:

ソート文字列は以下のとおりです。
文字列AB
文字列ですが1
です文字列はab
文字列は1
です文字列AB
文字列である列1
あるAB
文字列である1つの
文字列であるAB
文字列であり、それだけ両方の配列の最初の要素を取って1

あります。

+0

なぜあなたは他の何かを期待していますか?配列要素にアクセスする前に、変数 'k'と' j'を '0'に設定します。 – Tom

+0

変数に意味のある名前を使用するようにしてください。どのインデックス/配列が何を参照しているかを言うのは本当に難しいです。 –

答えて

2

ループ内ではなく、ループの前にkj0を初期化する必要があります。

int k=0; 
    int j=0; 
    for(int i=0; i<10; i++)//for merging both 
    { 
     if((i+1)%2==0) 
     { 
      str1[i]=String.valueOf(num[k]); 
      System.out.println("The String are "+str1[i]); 
      k++; 
     } 
     else 
     { 
      str1[i]=str[j]; 
      System.out.println("The String are "+str1[i]); 
      j++; 
     } 
    } 
+0

それは、大失敗を指摘するために感謝して:) – Guddi

0

Arraysクラスを使用すると、配列を並べ替えることができます。

String[] strArray = new String[] {"a","z","q","p"}; 
Arrays.sort(strArray); 

同様に、2番目の配列にしてください。今

、2つの配列のサイズを追加することにより、別の配列を宣言:

String[] newArray = new String[sum]; 
int j=0; 
for(int i=0;i<newArray.length;i+=2) 
{ 
    newArray[i]=strArray[j]; 
    newArray[i+1] = otherArray[j++]; 
} 
0

他の人々は根本的な原因を指摘しています。これに加えて、容量を10(および20)とすると、必要な容量の5倍(および10倍)の2倍のアレイnum[]str[]str1[]を初期化するのはなぜですか?

もう1つの問題は、str1[]の名前が本当に悪いことです。

関連する問題