我正在创建一个随机存取文件,用于存储玩家的名字,等级和技能,我正在制作它,这样如果你输入一个超过26的玩家名字,那么它会被缩减为26,如果它短于26,我想用空白填充它。
我想出了subString,以确保只选择前26个,但我想知道你们建议如果我没有任何价值,我会建议我有26个填充空白。这只是我的代码片段,如果您希望我添加更多代码,我会。
public static String PlayerNameMethod (RandomAccessFile store){
try{
String PlayerName = input.next();
store.writeUTF(PlayerName);
if (PlayerName.length()> 26){
PlayerName.substring(0,26);
System.out.print("The Player Name is" + PlayerName);
}
if (PlayerName.length()< 26){
//PART I CANT FIGURE OUT
}
答案 0 :(得分:2)
有很多方法可以做到这一点 - 最直接的方法是在字符串足够长的时候添加空格的循环。
但是,一种代码非常短并且使用内置函数的方法是String.format
函数:
PlayerName = String.format("%-26s", PlayerName);
请注意,您的其余代码中存在一些问题。这一行:
PlayerName.substring(0,26);
什么都不做。字符串是不可变的,这意味着更改字符串的函数始终返回新字符串 - 它们不会修改原始字符串。
这一行应该是:
PlayerName = PlayerName.substring(0,26);
答案 1 :(得分:1)
@Erwin提到的答案是最简洁的。 但是,如果您想自己动手,这就是您需要做的事情。
if (PlayerName.length() < 26)
{
StringBuilder paddedName = new StringBuilder(PlayerName);
for (int i = 0; i < 26 - PlayerName.length(); i++)
{
paddedName.append(" ");
}
PlayerName = paddedName.toString();
}
注意:java约定规定您应该以小写字母开头的变量名称。在您的情况下playerName
答案 2 :(得分:0)
创建一个长度为= 26-PlayerName.length()的字符串,每个字符为空,并将其附加到PlayerName