繁体   English   中英

如何在 Java 中创建 padString 函数?

[英]How do I create a padString function in Java?

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

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

padString ("hello", 8)

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

padString ("congratulations", 10)

应该返回"congratualtions"

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

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

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

  2. 需要 <= 0 填充字符? 返回输入字符串

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

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

甚至认为这篇文章大约有 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;
             }
       }

您可以在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!                           '.

一次拿一块(不给你所有的代码):

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

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

"例如,padString("hello", 8) 应该返回"hello"。"

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

“如果字符串的长度已经至少与长度参数一样长,则您的方法应返回原始字符串。例如,padString("congratulations", 10) 应返回“congratualtions”。”

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

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
}
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();

    }
}

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

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;
}

} 
public String padString (String s, int padding) {

   return String.format("%-" + padding + "s", s);

} 

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM