好的,所以我在这里有一个完整的代码,目前正在使用一个展示笔记本电脑的项目。 如何在输出线条时以“字母顺序”显示笔记本电脑类(戴尔,宏基等)?
就像,宏碁打开......戴尔打开(应按字母顺序排列)
我被困住了。我尝试排序数组函数,但我想不出其他方法。
我真的很感谢你们的任何帮助。
public class LaptopProcessor
{
private static LaptopProcessor lp = new LaptopProcessor();
private static LaptopGenerator lg = new LaptopGenerator();
private static Laptop [] laptop = new Laptop[9];
private static String[] LaptopOriginalCompare = new String[9] ;
private static String[] LaptopTempoCompare = new String[9] ;
private static int ctr;
private static int ctrFrom;
private static int ctrTo;
private static boolean isTheSame;
private static String brandName1;
private static String brandName2;
private static String time;
private void populateLaptops(){
/*populates all laptop attributes since laptop[ctr] is global */
for(ctr=0; ctr<laptop.length ;ctr++){
laptop[ctr] = lg.selectLaptopByNumber(ctr);
//populate the time
}
/*just to get the class name*/
for(ctr=0; ctr<laptop.length ;ctr++){
Class c = laptop[ctr].getClass();
System.out.println(c);
}
}
private void selectAndcompareShutdownTime(){
for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
/*here now you can compare there attributes*/
if (ctrFrom != ctrTo){
brandName1 = laptop[ctrFrom].showBrand();
brandName2 = laptop[ctrTo].showBrand();
time = laptop[ctrFrom].selectShutdownTime(); ///just get any of the two shutdown time just to output
isTheSame = laptop[ctrFrom].selectShutdownTime().equalsIgnoreCase(laptop[ctrTo].selectShutdownTime());
if (isTheSame){
System.out.println(brandName1 + " and " +brandName2+ " has the same shutdown time for " + time + ".");
System.out.println("------------------------------------------------------------------------------");
System.exit(0);
}
}
}
}
}
private void selectAndcompareRebootTime(){
for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
/*here now you can compare there attributes*/
if (ctrFrom != ctrTo){
brandName1 = laptop[ctrFrom].showBrand();
brandName2 = laptop[ctrTo].showBrand();
time = laptop[ctrFrom].selectRebootTime(); ///just get any of the two shutdown time just to output
isTheSame = laptop[ctrFrom].selectRebootTime().equalsIgnoreCase(laptop[ctrTo].selectRebootTime());
if (isTheSame){
System.out.println(brandName1 + " and " +brandName2+ " has the same reboot time for " + time + ".");
System.out.println("------------------------------------------------------------------------------");
System.exit(0);
}
}
}
}
}
private void selectAndcompareOpenTime(){
for(ctrFrom=0; ctrFrom < laptop.length ;ctrFrom++){
for(ctrTo=0; ctrTo < laptop.length ;ctrTo++){
/*here now you can compare there attributes*/
if (ctrFrom != ctrTo){
brandName1 = laptop[ctrFrom].showBrand();
brandName2 = laptop[ctrTo].showBrand();
time = laptop[ctrFrom].selectOpenTime(); ///just get any of the two shutdown time just to output
isTheSame = laptop[ctrFrom].selectOpenTime().equalsIgnoreCase(laptop[ctrTo].selectOpenTime());
if (isTheSame){
System.out.println(brandName1 + " and " +brandName2+ " has the same open time for " + time + ".");
System.out.println("------------------------------------------------------------------------------");
System.exit(0);
}
}
}
}
}
private void executeShutdown(){
for(ctr=0; ctr < laptop.length ;ctr++){
laptop[ctr].shutdown();
}
selectAndcompareShutdownTime();
}
private void executeReboot(){
for(ctr=0; ctr < laptop.length ;ctr++){
laptop[ctr].reboot();
}
selectAndcompareRebootTime();
}
private void executeOpen(){
for(ctr=0; ctr < laptop.length ;ctr++){
laptop[ctr].open();
}
selectAndcompareOpenTime();
}
private void startProcess(){
populateLaptops();
System.out.println("");
/*choose which laptop functions*/
String strChoice = selectChoice();
switch(Integer.parseInt(strChoice)){
default:
case 1: executeOpen(); break;
case 2: executeReboot(); break;
case 3: executeShutdown(); break;
}
}
private String selectChoice(){
return javax.swing.JOptionPane.showInputDialog("LAPTOP METHOD: \n [1] OPEN \n [2] REBOOT \n [3] SHUTDOWN");
}
public static void main (String [] args){
// static method is special because it can be called without first creating an object of the class in which the method is declared
lp.startProcess();
}
}
public class Acer extends Laptop{
//ATTRIBUTES
final String shutDownTime = "10000MS";
final String rebootTime = "11000MS";
final String openTime = "12000MS";
private final String brandName = "ACER";
@Override
public void shutdown() //method header. This prints.
{
System.out.println("SHUTDOWN ACER IN " + shutDownTime);
}
@Override
public void reboot()
{
System.out.println("REBOOT ACER IN " + rebootTime);
}
@Override
public void open(){
System.out.println("OPEN ACER IN " + openTime);
}
@Override
public String selectShutdownTime(){
return shutDownTime;
}
@Override
public String selectRebootTime(){
return rebootTime;
}
@Override
public String selectOpenTime(){
return openTime;
}
@Override
public String showBrand(){
return brandName;
}
}
public class LaptopGenerator
{
public Laptop selectLaptopByNumber(int id){
switch(id){
default:
case 0: return new Msi();
case 1: return new Dell();
case 2: return new Toshiba();
case 3: return new Acer();
case 4: return new Asus();
case 5: return new Lenovo();
case 6: return new Samsung();
case 7: return new Hp();
case 8: return new Sony();
}
}
}
答案 0 :(得分:0)
我建议您使用TreeSet
示例:
Set<String> treeSet = new TreeSet<String>();
treeSet.add("somevalue");
treeSet.add("Acer");
treeSet.add("Samsung");
treeSet.add("Apple");
treeSet.add("Dell");
在TreeSet中,String将保持自然顺序。如果不方便,你可以提供一个比较器。