2012-01-05 162 views
0

所以我的代碼已經完成了,但現在我需要它來打印出所選的數字是否相等!模式識別

我已經爲FALSE/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還是應該說,Såhvad der synes atværeet problem? – alf 2012-01-05 19:23:29

+0

對不起,如果我沒有說清楚。你可以在代碼的底部看到,就在「validInteger」之前,我做了「if(numre!= numre」){print false} else {all the numbers ...}。但它不檢查所有數字。它只是打印一個數字,然後打印「所有數字是...」,然後是數字2,然後「所有數字是..」等我不知道如何讓它檢查你可以輸入的數字。 – Daniel 2012-01-05 19:24:49

+0

「但它不能正常工作」似乎並不清楚。如果你描述了究竟出了什麼問題,那將會容易得多。在丹麥的評論是輕度惱人的,因爲它們發生並且沒有幫助,但是缺乏問題描述會殺死問題。 – alf 2012-01-05 19:25:58

回答

1

那麼,numre != numre必然是false除非當然碰巧在另一個線程(或是NaN,但這是一個不同的故事)改變。

也許,你可能想比較一些數字?或者,也許你想擁有一個數據結構來保存你已經看到的數字(例如HashSetBitSet)?

舉例:當用戶輸入數字時,將其保存到。只要他完成,添加

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 2012-01-05 19:49:49

+0

@Daniel玩得開心。 – alf 2012-01-05 19:58:56

+0

它的工作原理。非常感謝你! :) – Daniel 2012-01-05 20:34:26

1

這是一個問題:

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

相較於自身相同的變量:將始終打印「ALLE數量相等」。

編輯:

記得以前輸入Integer,並比較最近輸入的Integer。使用Integer並初始化previousIntnull,以避免比較初始循環迭代。 因爲這是作業,我不會發布代碼,如果你自己編寫代碼,它會對你更有益。

+0

是的,我已經想到了。但那是正在打印的數字,所以我不知道如何比較所有數字?您選擇的號碼被放入「numre」並打印。這不像我有一個數組來保存數字並進行比較。有任何想法嗎? :) – Daniel 2012-01-05 19:30:52

+0

@Daniel好吧,錯誤,得到*一個數組來保存數字並比較它們*也許? :) – alf 2012-01-05 19:33:46

+0

創建一個'ArrayList '來存儲它們。如果你需要在列表中比較每個「Integer」與其他所有「Integer」,那麼你可以使用嵌套的for循環,記住不要比較相同的「Integer」。 – hmjd 2012-01-05 19:35:44