【问题标题】:Add up outputs/strings in a loop在循环中添加输出/字符串
【发布时间】:2017-12-03 11:15:21
【问题描述】:

如何在一个循环中将不同的字符串相加?

我的例子:

有一个 Stern–Brocot 树路径查找器。唯一的问题是它应该将输出作为一行。 完整代码:

import java.io.*;
import java.util.*;
public class Main {
  public static void main(String[] args) {
    double p, q;
    Scanner in = new Scanner(System.in);
    int[] vars = new int[2];
    for(int i = 0; i < vars.length; i++)
      vars[i] = in.nextInt();
    p = vars[0];
    q = vars[1];

  double p1 = 0 ;
  double p2 = 1 ;

  double q1 = 1 ;
  double q2 = 0 ;
  while( p1+p2 != p  && q1+q2 != q )
  {
      if (( p1+p2 )/ (q1+q2 ) < p / q) 
      {
          System.out.println("R");
          p1 += p2;
          q1 += q2;
      } 
      else if( ( p1+p2 ) / ( q1+q2 ) > p/q )
      {
          System.out.println("L");
          p2 += p1;
          q2 += q1;
      }
    }
  }
}

主要部分。我必须修复的部分。

while( p1+p2 != p  && q1+q2 != q )
  {
      if (( p1+p2 )/ (q1+q2 ) < p / q) 
      {
          System.out.println("R");
          p1 += p2;
          q1 += q2;
      } 
      else if( ( p1+p2 ) / ( q1+q2 ) > p/q )
      {
          System.out.println("L");
          p2 += p1;
          q2 += q1;
      }
    }
  }

问题:我怎么能做到这样,每次循环时,它都会将答案添加到完整答案中,并且在一切完成后,它会在一行中抛出完整答案。 差不多就是这样:

answer = answer + ("R");
answer = answer + ("L");
System.out.println(answer);

【问题讨论】:

    标签: java string loops output


    【解决方案1】:

    我猜,在这里使用System.out.print() 代替System.out.println() 会起作用。

    【讨论】:

      【解决方案2】:

      使用StringBuilder

      在循环前创建StringBuilder的实例,反复调用append方法构造输出字符串。完成结果字符串的形成后,调用toString 获取并打印最终结果。

      StringBuilder answerBuilder = new StringBuilder();
      while( ... ) {
          ...
          answerBuilder.append("L");
          ...
          answerBuilder.append("R");
          ...
      }
      String answer = answerBuilder.toString();
      

      保持StringBuilder 优于随用随打印方法的一个优点是,您可以在打印之前返回并更改您构建的字符串的开头或中间。

      【讨论】:

        【解决方案3】:

        如果您想最后得到答案,只需使用StringBuilder 并附加您显示的每个字符串,最后只显示这个StrigBuilder 变量。

        【讨论】:

          猜你喜欢
          • 2014-06-05
          • 1970-01-01
          • 1970-01-01
          • 2019-02-03
          • 2012-07-07
          • 1970-01-01
          • 2018-07-17
          • 2018-08-10
          • 2015-09-18
          相关资源
          最近更新 更多