2016-12-08 6 views
-2

Я использую Android-студию для своей самой высокой карты. У меня есть три класса Java, называемые «Карты», «Палуба», «Гамелог». до сих пор все идет хорошо, но у меня есть небольшая проблема с отправкой функции для моего метода сравнения карт. Это то, что у меня есть до сих пор ...Самая высокая карта выигрывает моя программа, и теперь я хочу сравнить карты

import android.graphics.Color; 

/** 
* Created by azib2 on 12/1/2016. 
*/ 
enum Suite { 
    Heart, diamond, spades, clubs; 

    public String toString() 

    { 
     switch (this) { 
      case Heart: 
       return "Heart"; 
      case diamond: 
       return "diamond"; 
      case spades: 
       return "spades"; 
      case clubs: 
       return "clubs"; 
      default: 
       return "Wrong type"; 
     } 

    } 

    public String symbol(){ 

     switch (this) { 
      case Heart: 
       return "\u2764"; 
      case diamond: 
       return "\u2666"; 
      case spades: 
       return "\u2660"; 
      case clubs: 
       return "\u2663"; 
      default: 
       return "Wrong type"; 
     } 
    } 


    public int colors() { 
     switch (this) { 
      case Heart: 
      case diamond: 
       return Color.RED; 
      case spades: 
      case clubs: 
       return Color.BLACK; 
     } 

     return 0; 
    } 

} 
public class Cards { 
    private int cardnum; 
    private Suite suitetype; 


    public Cards(int cardnum, Suite suitetype){ 
     this.cardnum = cardnum; 
     this.suitetype = suitetype; 
    } 
    public String CardType(int num){ 
     switch(num){ 
      case 1: return "A"; 
      case 2: return "2"; 
      case 3 : return"3"; 
      case 4: return "4"; 
      case 5: return "5"; 
      case 6: return "6"; 
      case 7: return "7"; 
      case 8: return "8"; 
      case 9: return "9"; 
      case 10: return "10"; 
      case 11: return "J"; 
      case 12: return "Q"; 
      case 13: return "K"; 
      default: return " error invaild "; 
     } 

    } 
    public void CompareCards(){ 

    } 

    public int Getcardnum(){ 
     return cardnum; 
    } 
    public Suite getsuite(){ 
     return suitetype; 

    } 
} 

Что мне делать, чтобы сравнивать карты?

+0

Прежде чем вы перейдете к техническим деталям написания функции 'CompareCards()', вы можете подумать о том, что она должна делать в общем смысле. Например, откуда это будет вызвано? Какими были бы его исходные данные? Если он, возможно, возьмет экземпляр карты в качестве ввода и возвращает логическое значение, указывающее, является ли эта карта выше, чем 'this' (подобно тому, как функция' .equals() может работать)? Или...? (Кроме того, я удалил тег «javascript» из вашего вопроса: JavaScript! = Java.) – nnnnnn

+0

Будет ли Ace быть самым высоким или самым низким? –

ответ

0

Во-первых, я рекомендую «Карты» быть «Картой». Но я буду придерживаться «Карт» здесь.

Это похоже на хороший пример использования для Comparable интерфейса:

public class Cards implements Comparable<Cards> { 

    // Ace lowest: 
    public int compareTo(Card other) { 
     return Integer.compare(cardnum, other.cardnum); 
    } 
} 

Тогда, чтобы увидеть, если одна карта выше, чем другой:

if(card.compareTo(otherCard) > 0) { ... } 

При таком подходе можно даже сортировать список карточек с использованием:

List<Cards> cards = new ArrayList<Cards>(); 
// Add all cards desired 
Collections.sort(cards); 

Если вы хотите стабильную сортировку (по обеим значениям и костюм):

public class Cards implements Comparable<Cards> { 

    // Ace lowest: 
    public int compareTo(Card other) { 
     // Compare by value first 
     int diff = Integer.compare(cardnum, other.cardnum); 
     if(diff != 0) return diff; 
     // Compare by suit 
     return suitetype.compareTo(other.suitetype); 
    } 
} 
+1

Спасибо, это действительно помогло. Ваши удивительные. –