程序功能:根据存款余额,给账号排序。interface Comparable{
int compareTo(Object o);
}
class BankAccount implements Comparable{
private double balance; //余额
private String acctNo; //账号
BankAccount (String no,double bal){
acctNo=no;
balance=bal;
}
public String toString(){
return "账号="+acctNo+"余额"+balance;
}
public int compareTo(Object arg0){
BankAccount b=(BankAccount)arg0;
if(balance<b.balance){
return -1;
}
else if(balance==b.balance){
return 0;
}
else{
return 1;
}
}
public static void sort(BankAccount[] b){ // 排序
BankAccount temp,max;
int m;
for(int i=0;i<b.length-1;i++){
max=b[i];
m=i;
for(int j=i+1;j<b.length;i++)
if(max.compareTo(b[j])>0){
max=b[j];
m=j;
}
temp=b[i];
b[i]=b[m];
b[m]=temp;
}
}
public static void print(BankAccount[] b){
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
}
}
public class Test2 {
public static void main(String[] args){
BankAccount[] b=new BankAccount[5];
b[0]=new BankAccount("101",756);
b[1]=new BankAccount("102",123);
b[2]=new BankAccount("103",566);
b[3]=new BankAccount("104",987);
b[4]=new BankAccount("105",566);
BankAccount.print(b);
BankAccount.sort(b);
System.out.println("**********************************");
BankAccount.print(b);
}
}
但是打印出来却只是排序之前的账号信息,没有排序之后的。想用Eclipse 断点调试,但又不会调试。高手们给个指示啊!
int compareTo(Object o);
}
class BankAccount implements Comparable{
private double balance; //余额
private String acctNo; //账号
BankAccount (String no,double bal){
acctNo=no;
balance=bal;
}
public String toString(){
return "账号="+acctNo+"余额"+balance;
}
public int compareTo(Object arg0){
BankAccount b=(BankAccount)arg0;
if(balance<b.balance){
return -1;
}
else if(balance==b.balance){
return 0;
}
else{
return 1;
}
}
public static void sort(BankAccount[] b){ // 排序
BankAccount temp,max;
int m;
for(int i=0;i<b.length-1;i++){
max=b[i];
m=i;
for(int j=i+1;j<b.length;i++)
if(max.compareTo(b[j])>0){
max=b[j];
m=j;
}
temp=b[i];
b[i]=b[m];
b[m]=temp;
}
}
public static void print(BankAccount[] b){
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
}
}
public class Test2 {
public static void main(String[] args){
BankAccount[] b=new BankAccount[5];
b[0]=new BankAccount("101",756);
b[1]=new BankAccount("102",123);
b[2]=new BankAccount("103",566);
b[3]=new BankAccount("104",987);
b[4]=new BankAccount("105",566);
BankAccount.print(b);
BankAccount.sort(b);
System.out.println("**********************************");
BankAccount.print(b);
}
}
但是打印出来却只是排序之前的账号信息,没有排序之后的。想用Eclipse 断点调试,但又不会调试。高手们给个指示啊!
for(int j=i+1;j<b.length;i++) //<-- 应该是j++
if(max.compareTo(b[j])>0){
max=b[j];
m=j;
}
1. 学会dubug调试程序,这在你以后的开发中是很重要的。
2. 对于适用循环的代码里,如果程序始终不能结束,你应该查看一下自己的循环,游标是否移动?如果游标移动了,看看移动的游标对不对或者你需要移动游标的条件是不是正确~~学习是一个积累的过程~
interface Comparable {
int compareTo(Object o);
}class BankAccount implements Comparable {
private double balance; // 余额 private String acctNo; // 账号 BankAccount(String no, double bal) {
acctNo = no;
balance = bal;
} public String toString() {
return "账号=" + acctNo + "余额" + balance;
} public int compareTo(Object arg0) {
BankAccount b = (BankAccount) arg0;
if (balance < b.balance) {
return -1;
} else if (balance == b.balance) {
return 0;
} else {
return 1;
}
} public static void sort(BankAccount[] b) { // 排序
BankAccount temp, max;
int m;
for (int i = 0; i < b.length - 1; i++) {
max = b[i];
m = i;
for (int j = i + 1; j < b.length -1; j++)//死循环
if (max.compareTo(b[j]) > 0) {
max = b[j];
m = j;
}
temp = b[i];
b[i] = b[m];
b[m] = temp;
}
} public static void print(BankAccount[] b) {
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
}
}public class Test2 {
public static void main(String[] args) {
BankAccount[] b = new BankAccount[5];
b[0] = new BankAccount("101", 756);
b[1] = new BankAccount("102", 123);
b[2] = new BankAccount("103", 566);
b[3] = new BankAccount("104", 987);
b[4] = new BankAccount("105", 566);
BankAccount.print(b);
BankAccount.sort(b);
System.out.println("**********************************");
BankAccount.print(b);
}
}
for (int j = i + 1; j < b.length -1; j++)//死循环 这里应该是j < b.length 理解错了