Comment puis-je trier mes articles par la fois le prix et le nom?
J'ai donc une question sur ce qu'il faut faire ensuite. Je suis en train de travailler sur ce programme et les exigences sont.
Ailes Café
Un café local vend une variété de différents éléments présentés ci-dessous à leurs clients. Vous êtes invité à écrire une application Java qui peut être utilisé pour garder une trace de ces articles. En outre, ce programme fournit un moyen pour imprimer la liste des articles.
Item Name Price
Coffee $1.00
Water $2.00
Milk $1.50
Bagel $1.25
Donut $0.75
Votre programme va créer une classe, Élément nommé. Cette classe est la suivante:
- Une Chaîne variable d'instance pour contenir le nom de l'élément
- Une double instance de variable pour contenir le prix
- Un constructeur qui prend une Chaîne et un double pour ini
Une fois que vous avez cette classe créée, vous écrivez une deuxième classe nommée CoffeeDriver. Cette classe possède les méthodes suivantes:
- sortName – cette méthode trie le tableau des articles par nom d'élément, puis affiche le nom et le prix de tous les éléments sur l'écran
- sortPrice – cette méthode trie le tableau des articles par prix du produit, puis affiche le nom et le prix de tous les éléments sur l'écran
- principal - Il crée un tableau d'objets Item en utilisant les données ci-dessus pour définir chaque Élément de l'information.
- Une méthodes get et set pour chaque variable d'instance
C'est tout ce que j'ai jusqu'à présent. Je vais avoir du mal à réfléchir à la façon de tri d'un tableau. Donc, si je tri 2 les différents tableaux comment puis-je les garder en bon ordre. Comme par exemple coffee = $1
comment puis-je trier et de les garder ensemble.
import java.util.Scanner;
public class CoffeeDriver {
//main method
public static void main (String[] args){
String[] itemName = {"Coffee, Water, Milk, Donut, Bagel"};
double[] itemPrice = {1.00, 2.00, 1.50, 0.75, 1.25};
Scanner input = new Scanner(System.in);
String decision;
System.out.println ("Welcome to Wings Coffee Shop");
System.out.println ("We have a great list of tasty items on our menu.");
System.out.println ("Would you like to see these items sorted by");
System.out.println ("name or by price? (n/p): ");
decision = input.nextLine();
if (decision == "n"){
sortName(itemName);
}
else {
sortPrice(itemPrice);
}
}
//method to sort by item name and display
public static void sortName (String[] array){
for (int i = 0; i < array.length; i++){
System.out.println (array[i].toString());
}
}
//method to sort by item price and display
public static void sortPrice (double[] array){
for (int i = 0; i < array.length; i++){
System.out.println (array[i]);
}
}
}
public class Item {
private String name;
private double price;
Item(String itemName, double itemPrice){
itemName = name;
itemPrice= price;
}
public String getName(){
return name;
}
public void setName(String itemName){
itemName = name;
}
public double getPrice(){
return price;
}
public void setPrice(double itemPrice){
itemPrice = price;
}
}
Par la voie, +1 pour dire ce que vous avez fait jusqu'à présent et pour dire exactement ce que vous rencontrez des problèmes avec!
OriginalL'auteur allencoded | 2011-02-13
Vous devez vous connecter pour publier un commentaire.
Correction à la Élément définition de la classe.
Vous devez assigner les paramètres dans les champs (À l'OP vous avez attribuer un champ de paramètre)
Utilisation Comparateur de paramètre de l'objet à mettre en œuvre le tri pour chaque champ.
compare
de retour de méthodea.getName().compareTo(b.getName())
? Aussi: unComparator
n'a généralement pas besoin d'uneequals()
mise en œuvre.D'accord! C'est vrai, mais dans ce code, je veux juste ajouter un modèle de valeur de retour de la méthode de comparaison pour la comparaison de données non chaîne.
OriginalL'auteur adatapost
Essayez de regarder les Tableaux.sorte qui devrait faciliter ce dont vous avez besoin.
OriginalL'auteur Tom
"Je vais avoir du mal à réfléchir à la façon de tri d'un tableau"
Vous pouvez prendre un coup d'oeil à la " java.util.Les Collections de la classe. Il contient un tas de méthodes utiles, y compris des outils pour le tri des listes. Vous aurez besoin de lire sur la façon de mettre en œuvre un "Comparateur" objet, trop.
EDIT: pense Aussi soigneusement sur exactement ce que vous voulez trier. Il y a une différence entre les éléments de tri par prix et le tri des prix.
J'ai supposé que c'est les devoirs donc je ne vais pas vous donner toute la réponse, mais j'espère que cela aide.
java.util.Arrays
doit être utilisé au lieu dejava.util.Collections
Bon point. J'ai tendance à préférer les Listes des tableaux, mais merci pour cette remarque.
OriginalL'auteur Cameron Skinner
Vous ne serait pas trier les deux tableaux en parallèle (ce qui est possible, mais pas dans l'API Java, et a donc dû être fait par vous-même), mais de créer des objets d'éléments (dans un tableau ou d'une collection) à partir du nom et de l'information sur les prix, et puis trier ce tableau/Liste (ou utiliser une collection triée comme TreeSet).
Pour cela, vous pouvez regarder la
java.util.Comparator
etjava.util.Collections.sort
(oujava.util.Arrays.sort
).OriginalL'auteur Paŭlo Ebermann
Pseudo-code Java (à l'Aide d'une représentation d'objet, par exemple (Double) au lieu de double serait plus facile que nous pourrions faire usage de l'existant méthode compareTo qui est mis en œuvre au niveau de l'objet.)
OriginalL'auteur Kripa