首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可比compareTo函数

可比compareTo函数
EN

Stack Overflow用户
提问于 2013-04-07 21:22:45
回答 2查看 729关注 0票数 0

我想要有一个类似的函数compareTo两个街道地址。我目前正在研究地址的字符串(街道名称)。到目前为止,我有以下代码。我最终也希望能够比较街道号码,但我希望能够首先修复这个代码。每当我试图编译这段代码时,我都会得到以下错误:

代码语言:javascript
复制
StreetAddress.java:45: error: constructor StreetAddress in class StreetAddress cannot be applied to given types;
    StreetAddress add1 = new StreetAddress("cartesian road");
                         ^
  required: no arguments
  found: String
  reason: actual and formal argument lists differ in length
StreetAddress.java:46: error: constructor StreetAddress in class StreetAddress cannot be applied to given types;
    StreetAddress add2 = new StreetAddress("cartesian road");
                         ^
  required: no arguments
  found: String
  reason: actual and formal argument lists differ in length
StreetAddress.java:47: error: constructor StreetAddress in class StreetAddress cannot be applied to given types;
    StreetAddress add3 = new StreetAddress("n kings street");
                         ^
  required: no arguments
  found: String
  reason: actual and formal argument lists differ in length
StreetAddress.java:48: error: constructor StreetAddress in class StreetAddress cannot be applied to given types;
    StreetAddress add4 = new StreetAddress("pioneer parkway");
                         ^
  required: no arguments
  found: String
  reason: actual and formal argument lists differ in length
StreetAddress.java:49: error: constructor StreetAddress in class StreetAddress cannot be applied to given types;
    StreetAddress add5 = new StreetAddress("starry avenue");
                         ^
  required: no arguments
  found: String
  reason: actual and formal argument lists differ in length
5 errors

代码语言:javascript
复制
public class StreetAddress implements Comparable<StreetAddress>
{
protected int num;
protected String stName;

public void StreetAddress(int n, String s){
num = n;
stName = s;
}

public int getNum(){
    // returns the street number
    return num;
}

public String getName(){
    // returns the street name
    return stName;
}

public int compareTo(StreetAddress street) throws ClassCastException{
    // exception prevents crash if an address is not compared to
    // another address
    StreetAddress x = (StreetAddress) street;
    int compareName = this.stName.compareTo(street.stName); 
    if (compareName < 0){
        // first address comes after compared address
        System.out.println("test<0");
    }

    else if (compareName == 0){
        // same address
        System.out.println("test equal");
    }

    else{
        // first address comes before compared address
        System.out.println("test > 0");
    }

    }

public static void main(String args[])
{
StreetAddress add1 = new StreetAddress("cartesian road");
StreetAddress add2 = new StreetAddress("cartesian road");
StreetAddress add3 = new StreetAddress("n kings street");
StreetAddress add4 = new StreetAddress("pioneer parkway");
StreetAddress add5 = new StreetAddress("starry avenue");
add1.compareTo(add2);
add4.compareTo(add1);
add3.compareTo(add3);
add2.compareTo(add5);
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-07 21:25:17

正如你所指出的,问题是:

代码语言:javascript
复制
compareName == this.stName - (street.stName);

你不能减去字符串。我认为你要找的结果是:

代码语言:javascript
复制
int result = this.stName.compareTo(street.stName);

显然,这假定stName是一个String。如果不是,您必须在类compareTo中实现stName,就像我在编辑中看到的那样。您在编辑时报告的问题是,该类如下:

代码语言:javascript
复制
class StreetName {
    // Constructor
    StreetName(int n, String st) {
         // code
    }
}

但是,您正在尝试实例化类,如下所示:

代码语言:javascript
复制
StreetName fred = new StreetName("name");

您只向构造函数发送String,而不是向它发送int。假设数字很重要,您需要将其更改为:

代码语言:javascript
复制
StreetName fred = new StreetName(number, "name");
票数 3
EN

Stack Overflow用户

发布于 2013-04-07 21:24:41

从另一个字符串中减去一个字符串意味着什么?这不太合理。相反,在这个位置调用String自己的compareTo(...)方法如何?另外,==运算符不应该在那里:

代码语言:javascript
复制
int compareName = stName.compareTo(street.stName);

另外,您的compareTo方法被定义为返回一个int,所以最好返回该int。现在它没有归还任何东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15867996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档