【问题标题】:toString method on array of objects called from recursion method从递归方法调用的对象数组上的 toString 方法
【发布时间】:2016-06-19 21:49:59
【问题描述】:
class Anadromi001
    {
        public void Anadromi01 (Foititis[] F, short ap01, short i)
            {
                if (ap01 == 4) System.exit(0);
                Anadromi002 obj02 = new Anadromi002();
                String onoma, epitheto;
                short MesOr;
                int AritMit, EtosEis;
                short ap02;
                boolean flag00, flag02, flag03;
                int k, f, l = 0;          
                k = F.length-1
[...]
case 3:
                        f = obj02.Anadromi02(F, l);
                        if (f == -1) System.out.println("O pinakas einai adeios.");
                        else 
                            {
                                for (int j = 0; j <= f; j++)
                                    {
                                        System.out.println(F[j].toString());
                                    }
                            }
                        //System.out.println(f);
                        break;
                    }
    }

这是我的代码的一部分,我想做的是如果我调用第二个递归(当前代码本身就是一个递归),然后使用第二个递归的值来打印我的 toString 方法(放置在对象类)。不用理会case 3,它只是一个“代码”,供用户在程序中选择要做什么。

class Foititis 
    {
        String onoma, epitheto;
        short MesOr;
        int AritMit, EtosEis;
        public Foititis (String on, String ep, int AM, int EE,  short MO)
            {
                onoma = on;
                epitheto = ep;
                AritMit = AM;
                EtosEis = EE;
                MesOr = MO;
            }

        public String toString()
            {
                String emf;
                emf = "--------------------" + "\n";
                emf = "Onoma: " + onoma + "\n";
                emf = "Epwnymo: " + epitheto + "\n";
                emf = "Arithmos Mitrwoy: " + AritMit + "\n";
                emf = "Etos Eisagwnis: " + EtosEis + "\n";
                emf = "Mesos Oros Mathimatwn: " + MesOr + "\n";
                emf = "--------------------";
                return emf;
            }
    }

当我执行程序时,我得到的输出是:--------------------

【问题讨论】:

    标签: java arrays object recursion tostring


    【解决方案1】:

    您实际上是在每一行中分配新值,而不是追加。所以它只显示最后一行。从第二个作业开始,您可以使用

    emf += <your string>
    

    或者您可以使用字符串生成器并附加行......最后是 toString

    【讨论】:

      【解决方案2】:

      使用+= 而不是= 来连接字符串,否则您将看到最后分配的内容。

      public String toString()
          {
              String emf;
              emf = "--------------------" + "\n";
              emf += "Onoma: " + onoma + "\n";
              emf += "Epwnymo: " + epitheto + "\n";
              emf += "Arithmos Mitrwoy: " + AritMit + "\n";
              emf += "Etos Eisagwnis: " + EtosEis + "\n";
              emf += "Mesos Oros Mathimatwn: " + MesOr + "\n";
              emf += "--------------------";
              return emf;
          }
      

      或者干脆

      public String toString()
          {
              return "--------------------" + "\n" +
                     "Onoma: " + onoma + "\n" +
                     "Epwnymo: " + epitheto + "\n" +
                     "Arithmos Mitrwoy: " + AritMit + "\n" +
                     "Etos Eisagwnis: " + EtosEis + "\n" +
                     "Mesos Oros Mathimatwn: " + MesOr + "\n" +
                     "--------------------";
          }
      

      【讨论】:

        【解决方案3】:

        使用

        emf = emf + "Prevous line" + "\n";
        

        在每个新行上。 您唯一的最后一行是打印。

        正确的格式是:

                      emf = "--------------------" + "\n"+
                      "Onoma: " + onoma + "\n"+
                      "Epwnymo: " + epitheto + "\n"+
                      "Arithmos Mitrwoy: " + AritMit + "\n"+
                      "Etos Eisagwnis: " + EtosEis + "\n"+
                      "Mesos Oros Mathimatwn: " + MesOr + "\n"+
                       "--------------------";
        

        或

                emf = "--------------------" + "\n";
                emf = emf +  "Onoma: " + onoma + "\n";
                emf = emf + "Epwnymo: " + epitheto + "\n";
                emf = emf + "Arithmos Mitrwoy: " + AritMit + "\n";
                emf = emf + "Etos Eisagwnis: " + EtosEis + "\n";
                emf = emf + "Mesos Oros Mathimatwn: " + MesOr + "\n";
                emf = emf + "--------------------";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-16
          • 1970-01-01
          • 2017-08-07
          相关资源
          最近更新 更多