Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]compareTo con superclasse di tipo abstract e sottoclassi

    Ciao devo implementare una classe che costruisca delle torri;la superclasse è abstract e le sottoclassi ne devono implementarne i metodi:

    codice:
    import java.lang.*;
    abstract class Blocco implements Comparable<Blocco>{
    String colore;Blocco(String colore){
    this.colore=colore;
    }
    public String getColore(){
    return colore;
    }
    abstract boolean puoStareSopra(Blocco b);
    public abstract int compareTo(Blocco o);
    }
    poi:

    codice:
    
    import java.util.*;
    class BloccoNumerato extends Blocco implements {
    int numero;
    BloccoNumerato(String colore,int numero){
    super(colore);
    this.numero=numero;
    }
    /** if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }*/
    public boolean equals(Blocco bn){
    return colore.equals(bn.colore);
    }
    /**puoStareSopra(Blocco b)
      che restituisce true se, nella costruzione della torre, questo blocco puo' stare sopra al blocco 
      specificato dal parametro b, false altrimenti. 
      Si assume che b sia un blocco disponibile (quindi, b!= null).*/
      
    public  boolean puoStareSopra(Blocco b){
    if(b.colore=="jolly"){
    return true;
    }else
    return false;
    }
    public int compareTo(Blocco o){
    int verifica=colore.compareTo(o.colore);
    if(verifica!=0){
    return verifica;
    }else
    return this.numero.compareTo(numero);
    }
    public String toString(){
    String s="";
    return s+=colore+ " "+numero;
    }
    public static void main(String[] args){
    BloccoNumerato i= new BloccoNumerato("blu",-5);
    BloccoNumerato n=new BloccoNumerato("blue",-1);
    ArrayList<Blocco> b=new ArrayList<Blocco>();
    b.add(i);
    b.add(n);
    Collections.sort(b);
    for(Blocco v:b){
     System.out.println(v);
     }
     }
     }
    Il punto è che Io vorrei verifcare che se due oggetti di tipo BloccoNumerato hanno lo stesso nome(con compareTo),allora comparo il numero...il compilatore mi dà errore...solo che non sò come posso fare xkè solo la classe Blocco può implementare il metodo comparable<Blocco>...come posso appilcare compareTo(della classe Blocco)anche con numeri(che è della classe BloccoNumerato)?
    Ultima modifica di el92; 12-05-2015 a 12:12

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    codice:
    public int compareTo(Blocco o){
    int verifica=colore.compareTo(o.colore);
    if(verifica!=0){
    return verifica;
    }else
    return this.numero.compareTo(numero);
    }
    numero è un int .... NON ha metodi! O usi Integer.compare(int a, int b) introdotto in Java 7 oppure in qualunque caso puoi usare i classici operatori < e > eventualmente sfruttando l'operatore condizionale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.