感谢您帮助我。
所以我的问题是我需要一个代码,要求你输入一个字符串,如“1234 567”(输入),然后再返回字符串数字,如“1 2 3 4 5 6 7”(输出) 我目前的代码是:
public class StringComEspaços {
public static String formatNumberWithSpaces(String inputString) {
String outputString = "222";
return outputString;
}
public static void main(String[] args) {
System.out.println(formatNumberWithSpaces("123 222 2222"));
}
}
感谢您的帮助,抱歉英语不好:)。
答案 0 :(得分:0)
试试这个功能:
public static String formatNumberWithSpaces(String inputString){
String outputString = ""; //Declare an empty String
for (int i = 0;i < inputString.length(); i++){ //Iterate through the String passed as function argument
if (inputString.charAt(i) != ' '){ //Use the charAt function which returns the char representation of specified string index(i variable)
outputString+=inputString.charAt(i); //Same as 'outputString = outputString + inputString.charAt(i);'. So now we collect the char and append it to empty string
outputString+=' '; //We need to separate the next char using ' '
} //We do above instruction in loop till the end of string is reached
}
return outputString.substring(0, outputString.length()-1);
}
只需通过以下方式调用:
System.out.println(formatNumberWithSpaces("123 222 2222"));
或者如果您想要求用户输入,请尝试:
Scanner in = new Scanner(System.in);
System.out.println("Give me your string to parse");
String input = in.nextLine(); //it moves the scanner position to the next line and returns the value as a string.
System.out.println(formatNumberWithSpaces(input)); // Here you print the returned value of formatNumberWithSpaces function
不要忘记导入,这样您就可以阅读用户输入:
import java.util.Scanner;
有多种方法可以从键盘读取输入, java.util.Scanner 类就是其中之一。
我改变了:
return outputString;
..来:return outputString.substring(0, outputString.length()-1);
仅仅因为outputString+=' ';
也在字符串末尾附加空格,这是无用的。没有在if
内部添加for
循环,在解析最后一个字符时不会增加空间,这只是因为它在for
循环内的低性能。
答案 1 :(得分:0)
使用此代码。
public class StringComEspaços {
public static void main(String[] args) {
System.out.println(formatNumberWithSpaces("123 222 2222"));
}
private static String formatNumberWithSpaces(String string) {
String lineWithoutSpaces = string.replaceAll("\\s+", "");
String[] s = lineWithoutSpaces.split("");
String os = "";
for (int i = 0; i < s.length; i++) {
os = os + s[i] + " ";
}
return os;
}
}
答案 2 :(得分:0)
有许多方法可以解决您的问题。
您可以使用StringBuilder
以OO方式执行此操作:
public static String formatNumberWithSpaces(String inputString) {
StringBuilder output = new StringBuilder();
for (char c : inputString.toCharArray()) // Iterate over every char
if (c != ' ') // Get rid of spaces
output.append(c).append(' '); // Append the char and a space
return output.toString();
}
只需使用String
运算符代替StringBuilder
方法,您也可以使用+
代替.append()
。
或者你可以做得更多&#34;现代&#34;通过使用Java 8功能的方式 - 在我看来这很有趣,但不是最好的方式 - 例如像这样:
public static String formatNumberWithSpaces(String inputString) {
return Arrays.stream(input.split("")) // Convert to stream of every char
.map(String::trim) // Convert spaces to empty strings
.filter(s -> !s.isEmpty()) // Remove empty strings
.reduce((l, r) -> l + " " + r) // build the new string with spaces between every character
.get(); // Get the actual string from the optional
}
尝试一些适合你的东西。