【问题标题】:How do I return/implement the toString for the ArrayList? Also, just want to check that I've correctly created my objects?如何返回/实现 ArrayList 的 toString?另外,只是想检查我是否正确创建了我的对象?
【发布时间】:2017-08-29 07:51:08
【问题描述】:
import java.util.ArrayList;
import java.util.Date;
import javafx.scene.shape.Circle;

public class List2 {
    public static void main(String[] args){
        Loan newLoan = new Loan();                  
        Date theDate = new java.util.Date();
        Circle newCircle = new Circle();
        String s = new String();
        //last semicolon is also an error?

        private ArrayList<Object> List = new ArrayList<Object>();

        List.add(newLoan);
        List.add(theDate);
        List.add(newCircle);
        List.add(s);

        //**There's an error underlining all my . and ; when I add them to the List above?

        public String toString() {
            String results = "";
            for (Object d : List) {
                results += "," + d.toString();
            }
        }
    }
//I'm pretty new to this stuff

【问题讨论】:

  • 什么问题对不起?
  • 那是什么错误?你的 toString 方法也应该返回结果
  • 阅读 Java 命名约定。变量名以小写开头;和“列出”一个非常没有意义的列表名称。名称应该说明意图,它们不仅仅是占位符!
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。除此之外:如果这些简单的事情已经让你负担过重:退后一步;做一些学习;忘记将 JavaFX UI 应用程序组合在一起(如果这是您的目标)
  • 您正在尝试定义toString() inside main。您不能直接在 Java 中的其他函数中定义函数。您也不能将局部变量声明为 private

标签: java object arraylist tostring


【解决方案1】:

您的代码中有很多错误:

第一 永远不要用大写字母开头的变量命名,java使用camelCase

第二 不要在您的方法中使用私有 public 声明您的变量。

private ArrayList<Object> List = new ArrayList<Object>();

第三 你不能在另一个方法中声明一个方法,你必须在完成后关闭第一个方法:

public static void main(String args[]){//------Start
  ...
}//---End

public String toString(){//---Start
  ...
}//---End

第四次 当你想用参数调用方法时,你可以像这样传递它们:

method(list);

第五 ArrayList 已经隐含了 toString 所以你不需要再次创建它,你可以使用:

list.toString()

如果你想再次实现它,你可以使用:

public static void main(String[] args) {
    King newLoan = new King();
    Date theDate = new java.util.Date();
    Circle newCircle = new Circle();
    String s = new String();

    ArrayList<Object> list = new ArrayList<Object>();

    list.add(newLoan);

    list.add(theDate);

    list.add(newCircle);

    list.add(s);

    System.out.println(newLoan.toString(list));
}

public String toString(ArrayList<Object> list) {
    String results = "";
    for (Object d : list) {
        results += "," + d.toString();
    }
    return results;
}

【讨论】:

  • 感谢您的帮助。我不知道 ArrayList 已经实现了一个 toString。
  • 糟糕。以为我选择了它...必须双击。对不起:)
【解决方案2】:

首先...

您的代码未编译,因为您违反了 sintax 规则...

这里是:

private ArrayList<Object> List = new ArrayList<Object>();

不能被声明为private,因为你在一个方法内部,这是无效的,

由于 List 在静态上下文中使用,它也必须声明为 Static,或者创建类 List2 的 Object

另一方面

toString方法返回一个字符串对象,你需要返回一些东西,比如我可以推断出的results对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2013-07-25
    相关资源
    最近更新 更多