2011-10-11 3 views
1

J'ai donc une autre tâche à faire et la tâche consiste à trier les chaînes par ordre alphabétique en utilisant la méthode compareTo. Fondamentalement, le programme reçoit 3 chaînes (a, b et c) d'une classe de testeur et est censé renvoyer les "getMin", "getMiddle", et "getMax".Java, trier les chaînes par ordre alphabétique sans tableaux

J'ai compris le getmin et le max, semblait facile mais j'avais des problèmes avec le getMiddle. ce que j'ai pour min et max:

 String min = ""; 
    if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a; 
    else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b; 
    else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c; 
    return min; 

et de même pour get max légèrement différente. Comment puis-je créer le getMiddle? Nous ne sommes pas non plus autorisés à utiliser des tableaux car nous ne les avons pas encore appris. et le prof a dit que le code pour obtenir le milieu devrait être autour de 5-6 lignes.

Merci

+0

Pourquoi a-t-il été étiqueté comme 'questions d'entrevue'? –

Répondre

6

Multiplier les valeurs de retour de la méthode compareTo. Si la valeur est moyenne, les résultats de la méthode compareTo ont des signes différents. do multiplier résultat est zéro ou a un signe négatif.

String getMiddle(String a,String b,String c) 
{ 
    String middle = ""; 
    if (a.compareTo(b)*a.compareTo(c) <= 0) middle = a; 
    else if (b.compareTo(a)*b.compareTo(c) <= 0) middle = b; 
    else if (c.compareTo(b)*c.compareTo(a) <= 0) middle = c; 
    return middle; 
} 
+0

ahh merci beaucoup, c'est en fait assez brillant, je ne pense pas que loin :) – Cody

1
String middle = ""; 
    if (a.compareTo(b) <= 0 && a.compareTo(c) >= 0) middle = a; 
    else if (b.compareTo(a) <= 0 && b.compareTo(c) >= 0) middle = b; 
    else if (c.compareTo(b) <= 0 && c.compareTo(a) >= 0) middle = c; 
    return middle; 
+0

yah mais ce n'est pas si simple, j'ai essayé que sauf si 'si (a.compareTo (c) <= 0 && a.compareTo (b)> = 0) milieu = a;' c'est aussi une possibilité, même pour les 2 autres variables :( – Cody

1

Faire votre chemin, il ressemblerait à ceci:

if  (a.compareTo(b) > 0 && a.compareTo(c) <= 0) middle = a; 
else if (a.compareTo(c) > 0 && a.compareTo(b) <= 0) middle = a; 
else if (b.compareTo(a) > 0 && b.compareTo(c) <= 0) middle = b; 
else if (b.compareTo(c) > 0 && b.compareTo(a) <= 0) middle = b; 
else middle = c; 
return middle 

Eh bien, c'est le sens général derrière elle. Vous pouvez combiner certains d'entre eux pour moins de lignes, mais je vous laisse le soin de le faire.

+0

yah je sais, c'est ce que j'ai commencé à faire mais il finit un peu sur les lignes recommandées de code. la façon dont ivorycirrus l'a fait est correcte je pense. – Cody

0

cela donne le mid..haven't testé thorougly..and aussi, comme pour le nombre de lignes de prédiction, je ne suis pas sûr que je rencontrais très bien ... de toute façon ...

String mid = ""; 
    if (a.compareTo(b) <= 0) { 
     if (b.compareTo(c) <= 0) mid = b; 
     else mid = c;} 
    else if(a.compareTo(c) <= 0) mid = a; 
    else mid = c; 
    return mid; 
1

Pourquoi si compliqué? Just utilise TreeSet, il utilise compareTo() en interne :).

+0

yah mais nous ne l'avons pas encore appris, donc nous ne pouvons pas vraiment l'utiliser encore – Cody

0

Je vais aller avec TreeSet seulement parce qu'il est en train de trier les données après l'avoir ajouté.

+0

yah mais nous ne l'avons pas encore appris, donc nous ne pouvons pas vraiment l'utiliser encore – Cody

Questions connexes