2016-06-23 2 views
1

int 배열과 Strings (단어) 배열 중 하나가 2 개 있습니다. 두 가지를 모두 정렬 한 다음 이상한 곳에서 단어와 짝수이어야하는 방식으로 인쇄하십시오. 문자열 1
이다
문자열 AB
있습니다하나의 int 및 문자열 배열을 세 번째 배열로 병합

I 출력 얻고 무엇
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입니다.
문자열이 문자열은 1
문자열입니다 AB
있는 문자열은 AB
있는 1

그것은 단지 두 배열의 첫 번째 요소를 복용을하고있는 문자열은 1
문자열입니다 AB
있습니다 .

+0

왜 다른 것을 기대합니까? 배열 요소에 접근하기 전에'k'와'j' 변수를'0'으로 설정하면 첫 번째 요소 이외에 무엇을 검색해야합니까? – Tom

+0

변수에 의미있는 이름을 사용해야합니다. 어떤 색인/배열이 무엇을 언급하는지 말하는 것은 정말로 어렵습니다. –

답변

2

루프 내부가 아닌 루프 앞에 kj ~ 0을 초기화해야합니다.

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

그것은 blunder를 지적하기 위해 고맙다. :) – Guddi

0

사용자는 Arrays 클래스를 사용하여 배열을 정렬 할 수 있습니다.

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

마찬가지로 두 번째 배열을 시도하십시오.

지금, 두 배열의 크기를 추가하여 다른 배열을 선언 :

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) 인 num[]str[]str1[]이며 필요한 용량 인 5 (및 10)의 두 배가됩니까?

또 다른 문제는 str1[]의 이름이 실제로 나쁘다는 것입니다.

관련 문제