会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132436个问题

1.遇到的问题:

if(this.age<man.age())和if(this.age>man.age())这两行代码在man.age()那里报错,提示
Method call expected不知道问题出在哪边,我在成员变量前加个private然后用man.getAge()就
没问题.

2.代码区
package it.bzcxy;

import java.util.Arrays;

/*
对某个类的对象之间做比较,就需要实现Comparable 接口。接口中只有一个方法 compareTo,这个方法定义了对象之间的比较规则。
依据这个“比较规则”,我们就能对 所有对象实现排序。方法中,将当前对象和obj这个对象进行比较,如果大于返回1,等于返回 0,
小于返 回-1.等于返回0。集合中的元素两两进行比较,通过正数和负数决定谁前谁后,也就是升序降序
 */
public class DemoComparable {
    public static void main(String[] args) {
        //静态初始化不可以拆分写法
        ComparableMan[] man = {new ComparableMan("陈X", 22),
                new ComparableMan("陈X祥", 55),
                new ComparableMan("孙X琴", 54),
                new ComparableMan("陈X慧", 30)
        };
        Arrays.sort(man);//对数组进行排序,根据compareTO重写的比较规则进行排序
        System.out.println(Arrays.toString(man));
    }
}

class ComparableMan implements Comparable{
      String name;
      int age;

     //重写compare接口compareTo的比较规则,对对象进行排序
    @Override
    public int compareTo(Object o) {
        ComparableMan man=(ComparableMan)o;
        if(this.age<man.age()){
            return -1;
        }
        if(this.age>man.age()){
            return 1;
        }
        return 0;
    }

    @Override
    public String toString() {
        //重写toString方法打印对象的姓名属性
        return this.name;
    }

    public ComparableMan(){};

    public ComparableMan(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

报错截图:

image.png

JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 2912楼

老师,我重写了比较的方法,但是排序仍然出现问题,没找到哪里不对,望指正

package Test2001;

import java.util.Arrays;
import java.util.Scanner;

public class Test02 {
    public static void main(String[] args) {
        shangpin[] aa=new shangpin[5];
        aa[0] = new shangpin(1,"百战牌鼠标","BZ_001",99.21,0.9);
        aa[1] = new shangpin(2,"键盘侠玩偶","WO_102",403.00,0.7);
        aa[2] = new shangpin(3,"实战java程序设计","BK_001",89.00,0.8);
        aa[3] = new shangpin(4,"高琪牌西装","GQ_XF_12",700.00,0.5);
        aa[4] = new shangpin(5,"大米牌手机","DM_PH_13",900.00,0.3);
        for (int i = 0; i < 5; i++) {
            System.out.println(aa[i]);
        }
        System.out.println("请输入一个价格");
        Scanner yy=new Scanner(System.in);
        double x=(double)(yy.nextInt());
        for (int i = 0; i < 5; i++) {
            aa[i].zhiding(x);
        }
        Arrays.sort(aa);
        for (int i = 0; i < 5; i++) {
            System.out.println(aa[i]);
        }

    }
}
class shangpin{
    private int id;
    private String name;
    private String xinghao;
    private double jiage;
    private double zhekou;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getXinghao() {
        return xinghao;
    }

    public void setXinghao(String xinghao) {
        this.xinghao = xinghao;
    }

    public double getJiage() {
        return jiage;
    }

    public void setJiage(double jiage) {
        this.jiage = jiage;
    }

    public double getZhekou() {
        return zhekou;
    }

    public void setZhekou(double zhekou) {
        this.zhekou = zhekou;
    }

    public shangpin(int id, String name, String xinghao, double jiage, double zhekou) {
        this.id = id;
        this.name = name;
        this.xinghao = xinghao;
        this.jiage = jiage;
        this.zhekou = zhekou;
    }

    public shangpin() {
    }

    @Override
    public String toString() {
        return "{" +
                 id +"\t"+
                 name + "\t" +
                 xinghao + "\t" +
                 jiage +"\t"
                 + zhekou +
                '}';
    }


    public void zhiding(double a){
        if(this.jiage*this.zhekou>a){
            System.out.println("{" +
                    id +"\t"+
                    name + "\t" +
                    xinghao + "\t" +
                    jiage +"\t"
                    + zhekou +
                    '}');

        }
    }
    public int compareTo(Object o){
        shangpin m2=(shangpin)o;
        if(this.zhekou>m2.zhekou){
            return 1;
        }
        if(this.zhekou<m2.zhekou){
            return -1;
        }
        return 0;
    }
}


JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 2915楼
JAVA 全系列/第一阶段:JAVA 快速入门/IDEA的使用和第一个java项目 2916楼
JAVA 全系列/第一阶段:JAVA 快速入门/IDEA的使用和第一个java项目 2917楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 2918楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 2919楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637