【问题标题】:How to rewrite method so it prints out the desired outcome for a question?如何重写方法以便打印出问题的预期结果?
【发布时间】:2021-12-19 15:23:06
【问题描述】:

我有这个问题正在努力解决。

编写一个接收字符串和整数的方法,然后在同一行上多次将字符串打印到控制台,用空格、破折号、星号、破折号和另一个空格分隔。

示例调用:

myMethod("Matthew", 3);

样本输出:

Matthew -*- Matthew -*- Matthew

但是,我编写的方法不会将此输出打印出来。我是java新手。因此,非常感谢您的帮助。

/**
 * 
 */

package myloops;

import java.util.*;

/**
 * @author 
 *
 */
public class Quiz {
    /**
     * 
     * @param name
     * @param num
     */

    public static void myMethod(String name,  int num) {
    
    
    for (int loop = 1; loop <= num; loop++ ) {
      if (num%2 != 0) {
         System.out.print("-*-");
       } System.out.print(name);
    }
    }//end of other method
    
    /**
     * @param args
     */
    public static void main(String[] args) {
          
        myMethod("Matthew", 3);
    } // end of main method

} // end of parent class

【问题讨论】:

  • num 永远不会改变,那么if (num%2 != 0) 的意义何在?

标签: java string loops methods integer


【解决方案1】:

SO 有许多类似问题的答案示例,此示例基于此处的答案:https://stackoverflow.com/a/6857936/2711811 (>= java 8)

public static void myMethod(String name,  int num) {
    System.out.println(String.join(" -*- ", Collections.nCopies(num, name)));
}

【讨论】:

    【解决方案2】:

    你的代码有几个问题

    1. num 永远不会改变
    2. num%2 != 0 如果 num 为奇数且与此问题无关,则返回。

    因为你想在除了最后一个单词之外的单词 Matthew 之后打印 * 你应该使用下一个代码:

        for (int loop = 0; loop < num; loop++ ) {
            System.out.print(name);
            if (loop != num-1 ) {
                System.out.print(" -*- ");
            }             
        
        }
    

    【讨论】:

      【解决方案3】:

      字符串*-* 必须在除第一个名称之外的所有重复名称之前,因此您可以单独打印第一个然后循环遍历其余部分,或者循环遍历它们并检查它是否是第一个:

      public static void myMethod(String name,  int num) {
          for (int loop = 0; loop < num; loop++ ) {
              if (loop > 0 ) {
                  System.out.print(" -*- ");
              }             
              System.out.print(name);
          }
      }
      
      public static void main(String[] args) {      
          myMethod("Matthew", 3);
      }
      
      

      输出:Matthew -*- Matthew -*- Matthew

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多