2012-01-05 9 views
0

그래서 내 코드는 끝났지 만, 이제는 선택한 숫자가 같거나 가깝지 않은지를 출력해야합니다!패턴 인식

FALSE/NUMBERS ARE EQUAL에 대한 루프를 만들었지 만 올바르게 작동하지 않습니다. 도움을 받으실 수 있기를 바랍니다. 내 코드는 다음과 같습니다

if (numre != numre) { 
    System.out.println("FALSE"); 
} 
else { 
    System.out.println("ALLE THE NUMBERS ARE EQUAL"); 
} 

자체에 같은 변수를 비교 :

package patternrecognition; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.TreeMap; 

public class PatternRecognition { 

    public static void main(String[] args) throws Exception { 



     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 


     int AntalNumre = -1; 

     boolean Gyldignummer = false; 
     while (Gyldignummer == false) { 
      System.out.print("\n\nIndtast antal numre: "); 

      String numre = reader.readLine().trim(); 

      Gyldignummer = validInteger(numre); 

      if (Gyldignummer == false) { 
       System.out.println("Indtast et gyldigt nummer"); 
      } else { 

       AntalNumre = Integer.parseInt(numre); 
      } 

     } 


     HashMap vaerdier = new HashMap(); 

     for (int i = 0; i < AntalNumre; i++) { //Studerendes nummer(i+1) 

      boolean GyldigNummer2 = false; 

      while (GyldigNummer2 == false) { 
       System.out.print("\n\nIndtast en vaerdi for nummer " + (i + 1) + ": "); 

       String vaerdi = reader.readLine().trim(); 
       int vaerdien = -1; 

       GyldigNummer2 = validInteger(vaerdi); 
       if (GyldigNummer2 == false) { 
        System.out.println("Indtast et gyldigt nummer"); 
       } else { 

        vaerdien = Integer.parseInt(vaerdi); 
       } 
       vaerdier.put(vaerdi, new Integer(vaerdien)); 
      } 
     } 



     TreeMap SorteretNummer = new TreeMap(vaerdier); 

     Iterator nr = SorteretNummer.keySet().iterator(); 

     System.out.println("\n\n\n\n\n"); 
     System.out.println("Numre valgt:"); 
     System.out.println("------------"); 


     while (nr.hasNext()) { 

      String navn = (String) nr.next(); 


      int numre = ((Integer) SorteretNummer.get(navn)).intValue(); 

      System.out.println("" + numre); 

      if (numre != numre) { 
       System.out.println("FALSE"); 
      } 
      else { 
       System.out.println("ALLE THE NUMBERS ARE EQUAL"); 
      } 

     } 
    } 

    public static boolean validInteger(String nummer) { 
     boolean validInteger = false; 


     try { 
      Integer.parseInt(nummer); 
      validInteger = true; 
     } catch (NumberFormatException nfe) { 
      validInteger = false; 
     } 
     return validInteger; 

    } 
} 
+0

그래서 문제가되는 것 같습니까? http://catb.org/~esr/faqs/smart-questions.html 또는 내가 말하려는 것, 문제가 발생했을 때 그 사실을 알 수 있습니까? – alf

+0

내가 명확하게하지 않으면 죄송합니다. 코드의 botton에서 볼 수 있듯이 "validInteger"직전에 "if (numre! = numre") {print false} else {all numbers ...}를 만들었습니다. 그러나 모든 번호를 확인하지는 않습니다. 그것은 단순히 1 개의 숫자를 인쇄 한 다음 "모든 번호가 있습니다 ..."다음 2 번, "모든 번호가 있습니다 .."등을 인쇄합니다. 입력 할 수있는 번호를 확인하는 방법을 모르겠습니다. – Daniel

+0

"하지만 제대로 작동하지 않습니다."나에게 분명하지 않습니다. 정확히 무엇이 잘못되었는지 설명하면 훨씬 쉬울 것입니다. 덴마크어로 된 의견은 다소 괴롭다. 문제가 발생하지 않고 도움이되지 않기 때문에 문제를 설명 할 수 없다. – alf

답변

1

음은 numre != numre은 물론 numre 다른 스레드에서 변경이 발생하지 않는 한 false로 바인딩 (또는 NaN 될,하지만 그건 다른 이야기)입니다.

아마도 숫자 쌍을 비교할 수 있습니까? 또는 이미 본 숫자가 들어있는 데이터 구조를 원할 수도 있습니다 (예 : HashSet 또는 BitSet)?

예 : 사용자가 숫자를 입력하면 에 저장합니다. 그가 끝나자 마자

Set<Integer> set = new hashSet<Integer>(); 

// ...as we're getting numbers from user 

    set.add(numre); 

// ... 

if (set.size() == 1) 
    System.out.println("OMG they're all the same! " + set); 
+0

너는 당연해, 이건 내 숙제 다. :) 실제로 TreeMap, HashMap, BufferedReader 및 HashSet에 대해 아직 배웠다. 최근에 내 책에서 그걸 읽고 그것을 시도해보십시오! 그러므로 나는 도움을 청한다. 코드 등 ^^ HashSet을 수행하는 방법을 잘 모르겠습니다. 예를 들어 주시겠습니까? :) – Daniel

+0

@Daniel이 재미 있습니다. – alf

+0

작동합니다. 고마워요! :) – Daniel

1

이 문제가 항상 인쇄됩니다 "ALLE이 숫자는 같다."

는 편집 :

는 이전에 입력 Integer을 기억하고 가장 최근에 비교 Integer에 들어갔다. Integer을 사용하고 previousInt부터 null까지 초기화하면 초기 루프 반복 비교를 피할 수 있습니다. 숙제이므로 코드를 게시하지 않으며 코드를 직접 작성하면 더 많은 이점이 있습니다.

+0

네, 그 생각을했습니다. 그러나 그 숫자가 인쇄되고있는 것이므로 모든 숫자를 비교하는 방법을 모르겠습니다. 선택한 번호가 "숫자"로 표시되고 인쇄됩니다. 숫자를 저장하고 비교할 배열이있는 것 같지 않습니다. 어떤 아이디어? :) – Daniel

+0

@ 대니얼 음, errr, 숫자를 저장하고 비교할 배열 *을 얻으시겠습니까? :) – alf

+0

그들을 저장하기 위해'ArrayList '를 만듭니다. 각각의 'Integer'를리스트의 다른 모든 Integer와 비교할 필요가 있다면, 같은'Integer'를 비교하지 않는 것을 기억하면서,'for' 루프를 사용할 수 있습니다. – hmjd