返回已在类中声明的多个值(java)

时间:2016-04-07 11:09:29

标签: java

首先,我是一个很大的初学者。这是我正在努力解决的功课 - 我不需要最好的和最好的解决方案,但最简单的一个。感谢您的时间,大家都在阅读。

所以,我有这些属性:

public int identifikace;
public String druh;
public int vek;
public Majitel majitel;

在构造函数中使用,如下所示:

public Zvire(int identifikace, String druh, int vek, Majitel majitel){
    this.identifikace = identifikace;
    this.druh = druh;
    this.vek = vek;
    this.majitel = majitel;
}

写了一些简单易用的一招(

 public int getIdentifikace(){
    return identifikace;
}

),但现在我应该创建一个方法,使用 identifyikace druh vek majitel - 全部为字符串。

显然返回多个属性不起作用。那我该怎么办呢? Arraylist似乎是一种可能的解决方案,但我不知道如何使用它。

提前谢谢。

9 个答案:

答案 0 :(得分:1)

OMG问题,所以......

以字符串形式返回:

class Test {
String a;
String b
int c

    String getThat () {
       return a+b+c
    }

}

更好,使用StringBuilder:

class Test {
String a;
String b
int c

    String getThat () {
       StringBuilder builder = new StringBuilder();
       builder.append(a);
       builder.append(b);
       builder.append(c);
       return builder.toString();
    }

}

想要作为元组返回?使用泛型:

class Test {
String a;
String b
int c

public static class Tuples <A, B, C> {
  A a; B b; C c;
  Tuples (A a, B b, C c) {
  this.a = a
  this.b = b
  this.c = c
  }

 A getA () {
  return a;
  }

 //And so on.....

}

    Tuples<String, String, Integer> getThat () {
       Tuples<String, String, Integer> tuples = 
       new Tuples (a, b, c);
       return tuples;
    }

}

答案 1 :(得分:0)

你的老师可能希望你用1 String返回它们。

在java中,您可以简单地将整数与像

这样的字符串连接起来
String s = "abc";
int i = 5;
s + i; // returns abc5

如果要将对象转换为String,则需要使用内置的toString方法。

因此,要创建String,您需要执行

String s = identifikace + " " + druh + " " + vek + " " + majitel.toString();

如果你想用4种不同的方法将它们作为4个字符串单独返回,你可以简单地使用上面的解决方案,但不需要连接。

提示:将int转换为String的一种hacky方法是将它与&#34;&#34;连接起来。 (空字符串)

注意:如果toString没有被覆盖,那么它返回对象的哈希,如果你想让它返回自定义的东西,覆盖它。

答案 2 :(得分:0)

在Java中,所有类都从Object超类扩展,这使得toString()方法可用。此方法的目的是提供允许对象返回其自身的字符串表示的功能。

在您的情况下,您需要做的是override此方法并使其返回由您提到的数据组成的单个字符串。在这种情况下,您不需要返回多个项目。

答案 3 :(得分:0)

使用|符号分隔值。

public static String getAllProperties(){
return  identifikace +"|"+druh +"|"+vek+"|"+majitel;

}

示例访问方法:

public accessProperties()
{

String allValues=YOURCLASSNAME.getAllProperties();
    for (String retval: allValues.split("|")){
         System.out.println(retval);
      }
}

答案 4 :(得分:0)

我认为

  

创建一个返回带有identifyikace,druh,vek和   majitel - 全部为字符串

意味着类似

public String toString() {
    return String.format("%s %s %s %s", identifikace, druh, vek, majitel); 
}

答案 5 :(得分:0)

以文本形式返回属性的方法:

public String toString() {
   return "" + identifikace + druh + vek + majitel;
}

答案 6 :(得分:0)

你说:

  

现在我应该创建一个返回带有identifyikace,druh,vek和majitel的文本的方法 - 所有这些都是String。

这是您的方法签名的提示:您想要编写一个返回String的方法。实际上,这种要求非常普遍,以至于每个Java对象都以已经实现的method形式免费获取:public String toString()@Override public String toString() { return "" + this.identifikace + " " + this.druh + ... }

然而,这种默认方法并不实用。所以,你用这种方式覆盖那个方法:

+

这是因为连接运算符public。有更好的方法来连接各种对象,但想法是你以字符串的形式“序列化”对象的状态。

您应该在课堂上正确使用封装。您将字段声明为{{1}}并为其提供getter。这是非常不必要的。将您的字段设为私有。

答案 7 :(得分:0)

我不是一个java家伙,但是 -

 public string getIdentifikace(){
this.identifikace.toString()+","+this.druh +","+ this.vek.toString()+"," +this.majitel;
}

答案 8 :(得分:0)

嗯,你有多种方法可以做到这一点。但一种简单的方法是覆盖toString()类的Object方法作为@nipinti建议。这是一个实现。

@Override
public String toString(){
    return (this.identifikace+":"+this.druh+":"+this.vek+":"+this.majitel);
}

这是另一个使用ArrayList的实现(因为你也希望这样学习)

public List<Object> getAll(){
    List list=new ArrayList<Object>();
    list.add(this.identifikace);
    list.add(this.druh);
    list.add(this.vek);
    list.add(this.majitel);
    return list;
}

在包含main方法的类中:

public static void main(String[] args){
    ............

    List list= new YourClass().getAll();   

    ............
}

here是了解List界面的更多信息的链接 here是了解ArrayListLinkedList等实施的链接。