![](/img/trans.png)
[英]How do I create a function in Java, that can be called with many types?
[英]How do I create a padString function in Java?
我在書中看到的每一個其他問題,我至少對這本書的要求有所了解,但我不知道如何解決這個問題。 它是:
“編寫一個名為padString的方法,它接受兩個參數:一個字符串和一個表示長度的整數。例如,
padString ("hello", 8)
應該返回"hello "
(最后是三個空格)。 如果字符串的長度已經至少與長度參數一樣長,則您的方法應返回原始字符串。 例如,
padString ("congratulations", 10)
應該返回"congratualtions"
。
我不知道如何處理這個對 Java 來說非常新的問題。 這應該是初學者的功課,所以我想方法很簡單。 如果可以,請告訴我如何執行此操作並解釋步驟。 請並感謝任何提供幫助的人。
所以你的函數應該做這樣的事情:
確定所需的填充字符數。
需要 <= 0 填充字符? 返回輸入字符串
否則,創建一個帶有所需填充字符的字符串,然后返回輸入字符串 + 所需填充字符
您可以使用.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.