2014-11-11 3 views
0

이 프로그램에 어려움이 있습니다. 콘솔에서 배열을 읽어서 두 배열을 비교해야하며 사용자가 배열을 입력 한 후 해당 배열이 진실인지 아닌지에 대한 문구를 출력해야합니다. compare 함수를 사용할 수 있는지 확실하지 않지만 for 루프를 사용해야합니다. 여기 for 루프와 for java의 두 배열 비교

내가 시도 무엇 : (! firstArray와 [I] = secondArray를 [I]) 문제가 해결되지 않으면

import java.util.Scanner; 

@SuppressWarnings("unused") 
public class TwoArrays { 
    @SuppressWarnings("unused") 
    public static void main(String[] args) { 

     Scanner input1 = new Scanner(System.in); 
     System.out.println("enter the first array"); 
     String firstArrayAsString = input1.nextLine(); 

     System.out.println("enter the second array"); 
     String secondArrayAsString = input1.nextLine(); 

     if (firstArrayAsString. length() != secondArrayAsString.length()){ 
      System.out.println("false.arrays are not equal");  
     } else { 
      int arrayLen = firstArrayAsString.length(); 
      char[] firstArray = firstArrayAsString.toCharArray(); 
      char[] secondArray = secondArrayAsString.toCharArray(); 

      int i = 0; 
      while (i < arrayLen && firstArray[i] == secondArray[i]); { 
       i++; 
      } 

      if (i == arrayLen) { 
       System.out.println("true.they are equal"); 
      } else { 
       System.out.println("False.they are not equal"); 
      } 
     } 
     input1.close(); 
    } 
} 
+2

귀하의 질문은 무엇입니까? 위의 코드는'i == arrayLen -1'을 바꾸면 (우아한 것은 아니지만) 작동 할 수 있습니다 –

+0

작동하지만 인쇄가되지 않습니다 (내 일식에 atl 동쪽) true 또는 false.So 왜 그 일이 발생합니까? – user3376064

+0

무엇이 인쇄됩니까? 예외가 발생합니까? –

답변

0

이 코드를 사용해보십시오.

char[] firstArray = {'a', 'b', 'c'}; 
char[] secondArray = {'a', 'b', 'c'}; 

if (firstArray.length != secondArray.length) { 
    System.out.println("False.they are not equal"); 
} else { 
    boolean isEqual = true; 
    for (int i = 0; i < firstArray.length; i++) { 
     if (firstArray[i] != secondArray[i]) { 
      System.out.println("False.they are not equal"); 
      isEqual = false; 
      break; 
     } 
    } 
    if (isEqual) 
     System.out.println("true.they are equal"); 
} 
+0

나는 그것을 충분히 받아 들일 수있어서 기쁘다. 프로그래밍에 익숙하지 않은 누군가가 당신의 카피와 코드를 이해하지 못할 수도있다. – AdamMc331

+0

나는 투표의 이유를 알고 싶다. 그래서 나는 다음 번에 기억할 수있다. –

0
boolean isEqual = true; 

for(int i=0;i<arrayLen;i++){ 
    if(firstArray[i] != secondArray[i]){ 
     System.out.println("False.they are not equal"); 
     isEqual = false; 
     break; 
    } 
} 
if(isEqual){ 
    System.out.println("true.they are equal"); 
} 

이 변경하려고 ((firstArray와에 [i]를!. equals (secondArray [i]))) 또는 그와 같은 st.

0
int i = 0; 
while (i < arrayLen && firstArray[i] == secondArray[i]); { 
i++; 
} 

변경이 아래에 마지막으로

boolean isEqual = true; 
for(int i=0;i<arrayLen;i++){ 
    if(firstArray[i]!=secondArray[i]) { 
    isEqual = false; 
    break; 
    } 
} 

, 당신은 'ISEQUAL'

if(isEqual) System.out.println("Equal"); 
else System.out.println("Not Equal"); 
0

귀하의 문제 플래그 결과를 보여줄 수있는 것은

while (i < arrayLen && firstArray[i] == secondArray[i]); { 

가이 코드를입니다 끝에 세미콜론; 당신이

@SuppressWarnings("unused") 
를 사용 surpressed

if (i == arrayLen - 1) { 

경고해야

if (i == arrayLen) { 

전에 언급 한 바와 같이 // 그것을

플러스를 제거

이 아마도 유용하다고 말하고있었습니다.

0

이 값을 배열로 변경하는 대신 charAt(int) 함수를 사용하도록 변경했습니다. 문자열을 문자열로 읽으므로 다음과 같이 문자열로 비교하십시오.

if(firstArrayAsString.length() != secondArrayAsString.length()){ 
    return false; 
} else{ 
    for(int i = 0; i < firstArrayAsString.length(); i++){ 
     if(firstArrayAsString.charAt(i) != secondArrayAsString.charAt(i){ 
     return false; 
     } 
    } 
    return true; 
} 

먼저 배열의 크기가 동일한 지 확인합니다. 그렇지 않다면 이미 평등하지 못하다고 말할 수 있습니다. 크기가 같으면 반복해서 각 색인의 문자가 일치하는지 확인하십시오. 일치하지 않는 문자가 발견되면 그 문자는 동일하지 않습니다. 차이를 찾지 않고 전체를 반복하면 두 배열이 같습니다.

나는 그것이 루프를 사용할 필요가 있지 않다면, 왜 그냥 사용하는 것이 불구하고, 추가하고 싶습니다 :

firstArrayAsString.equals(secondArrayAsString); 

두 문자열 값을 비교?

사소한 편집

난 당신이 equals 메소드를 사용할 수 없습니다 말했다 볼 수 있지만, 나는 미래의 독자에 대한 가능한 대안으로 내 대답이 탈퇴를 선택하고 질문을 다시 읽기.

관련 문제