【问题标题】:How do I create a padString function in Java?如何在 Java 中创建 padString 函数?
【发布时间】:2011-04-26 18:24:37
【问题描述】:

我在书中看到的所有其他问题,我至少对这本书的要求有所了解,但我不知道如何处理它。它去:

“编写一个名为padString的方法,它接受两个参数:一个字符串和一个表示长度的整数。例如,

padString ("hello", 8)

应该返回"hello "(最后是三个空格)。如果字符串的长度至少与长度参数一样长,则您的方法应返回原始字符串。例如,

padString ("congratulations", 10)

应该返回"congratualtions"

我不知道如何处理这个对 Java 来说还很新的东西。这应该是初学者的功课,所以我想方法很简单。如果可以,请告诉我如何执行此操作并解释步骤。请并感谢任何提供帮助的人。

【问题讨论】:

  • 哈哈,现在是星期天晚上...家庭作业问题是周一或周二(或周三)到期的作业
  • 你能改变你的问题标题来指明主题吗?
  • 什么?你的例子对我来说没有意义。
  • 我不认为向您展示练习的目的。充其量我们应该为您指明一个试验方向。为此,下面的答案已经为您提供了如何解决此问题的一个很好的概述。

标签: java padding


【解决方案1】:

甚至认为这篇文章已经有 2 年的历史了。我最近有这个 作业的问题。我认为它可能会帮助其他初学者 可能会遇到此问题以查看更简单的解决方法 这个问题。

一个可能更符合他们所处的位置 初学者Java课程假设他们得到这个差不多 我做的时间。

当然,您应该删除循环中的破折号并使用空格 获得作业的功劳,那只是为了向您展示它 有效。

public class ex3_11_padString {
          public static void main(String[] args) {

             padString("hello",10);
          }

          public static String padString( String s, int len) {

             int s_length = s.length();
             int diff = len - s_length;
             String newString;

             newString = "";

             for (int x = 0 ; x < diff; x++) {
                newString += "-";
             }

             newString = newString + s;


             return new String;
             }
       }

【讨论】:

    【解决方案2】:
    public String padString (String s, int padding) {
    
       return String.format("%-" + padding + "s", s);
    
    } 
    

    这对我来说是更好的解决方案。取自@John C 的评论,添加了“%-”。

    抱歉@John C,我无法编辑您的评论或在您的评论下方添加评论。

    【讨论】:

      【解决方案3】:
      public class PadString {
          public static void main(String[] args) {
              String str = "hello";
              str = padStr(str, 10, ' ');
          }
      
          static String padStr(String s, int len, char c) {
      
              int n = len - s.length();
              if (n <= 0)
                  return s;
              StringBuilder b = new StringBuilder(s);
              for (int i = 0; i < n; i++)
                  b.append(c);
              return b.toString();
      
          }
      }
      

      【讨论】:

      • +1。如果您格式化代码并显示另一个调用 padStr(s, len, ' '); 的 padStr 会有所帮助。
      【解决方案4】:
      public static String padString(String str, int len) 
      { 
      
      int lengt=str.length();
      if(lengt==len||lengt>len)
       return str;
      else if(lengt<len){
       String spacstr="";
       for(var i=lengt;i<len;i++){
          spacstr+="$";
       }
       return str+spacstr;
      }
      
      } 
      
      ///more generalized  by accepting pad character
      
      
      
      public static String padString(String str, int len,String padChar) 
      { 
      
      int lengt=str.length();
      if(lengt==len||lengt>len)
       return str;
      else if(lengt<len){
       String spacstr="";
       for(var i=lengt;i<len;i++){
          spacstr+=padChar;
       }
       return str+spacstr;
      }
      
      } 
      

      【讨论】:

        【解决方案5】:

        一次接一个(不给你所有代码):

        "编写一个名为 padString 的方法 接受两个参数:一个字符串和 一个表示长度的整数。”

        public static ??? padString(String str, int len)
        

        "例如,padString("hello", 8) 应该返回“你好”。”

        public static String padString(String str, int len)
        {
            throw new Error("not implemented yet");
        }
        

        "如果字符串的长度已经在 至少与长度参数一样长, 你的方法应该返回原始的 细绳。例如, padString("恭喜", 10) 应该返回“祝贺”。”

        编辑:你解决了这个问题......

        public static String padString(String str, int len)
        {
            // if the str.length is greater than len
            //     return str
        
            // this next part is very simple, not a very good way but gets you 
            // started. Once you have it working look at StringBuilder and .append.
        
            // int val = the difference in length between the two strings
        
            // for i = 0; i is less than val; i++
            //     str += " ";           
        
            // return str
        }
        

        【讨论】:

        • +1 用于解释问题和方法但没有给出代码(因为他正在做作业:-D)
        【解决方案6】:

        您可以在System.out 中使用printf 方法(需要Java 1.6 或更高版本,这是一个新的PrintStream 方法)。看看下面一个有趣的例子,输出是(在下面的代码中指定)。填充在 printf 参数中指定为 30,并左对齐:

        package pft;
        
        public class PrintfTest {
         public static void main(String[] args) {
                int padding = 30;
             String s = "hi!";
             System.out.printf("'%0$-" + padding + "s'", s);
         }
        }
        
        prints: 'hi!                           '.
        

        【讨论】:

        • +1 以获得更类似于生产的示例(尽管对于讲师来说可能太高级了)。为什么 Java 认为不适合允许 * 宽度说明符对我来说仍然是一个谜——我不喜欢格式字符串的所有动态创建。
        • 如果你必须返回一个字符串,你甚至可以使用 String.format("%" + pad + "s", str) 来做同样的事情,这可能是我想要的代码使用,甚至在家庭作业中:)
        【解决方案7】:

        所以你的函数应该做这样的事情:

        1. 确定所需的填充字符数。

        2. 需要

        3. 否则,创建一个带有所需填充字符的字符串,然后返回输入字符串 + 所需填充字符

        您可以使用.length() 方法查找字符串的长度。

        【讨论】:

        • 轻微修正:虽然数组有 .length 属性,但字符串有 .length() 方法。 (这很烦人,因为它们都是对象。)
        【解决方案8】:

        您可能想查看 Java 的 String 类文档。寻找返回字符串长度的方法...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-03
          • 1970-01-01
          • 2022-10-12
          • 2022-08-16
          • 2021-01-29
          • 1970-01-01
          • 2016-04-29
          • 1970-01-01
          相关资源
          最近更新 更多