有没有办法获取System.out.print(); For循环中的值;

时间:2019-05-02 03:51:41

标签: java string for-loop

我在猜测String程序游戏,我需要将用户输入的字符串从字母和空格/空格转换为问号(?)。我将如何处理?

我使用了for循环,它给了我想要的东西,但是我无法在循环外使用for循环的输出。

System.out.println("Please enter a string of words.");

        String userString = scan.nextLine();
        userString=userString.toLowerCase();
        System.out.println(userString);

        int s1 = userString.length();
        System.out.println(s1);
        for(int a=0;a<s1;a++) {
            System.out.print("?");
        }

我为userString输入了“这是一个字符串”。 当我运行程序时,它输出: ???????????????? 有没有办法将此输出转换为字符串? 还是有更好的方法将String值转换为“?”?

5 个答案:

答案 0 :(得分:2)

不需要为每个字符打印?。您只需将每个字符替换为?并生成一个新字符串,而无需打印。

String newUserString = userString.replaceAll(".","?");

答案 1 :(得分:1)

如果您想用?替换字符串的每个字符,可以尝试

String newString = userString.replaceAll(".", "?");

"."是一个正则表达式,它将匹配除换行符之外的任何字符,换行符不会包含任何换行符。

答案 2 :(得分:0)

据我了解,我认为您想存储“?” , 要做到这一点 在for循环外创建一个字符串var 并附加'?'在里面。

String temp="";
for(int i=0;i<s1;i++)
{
temp=temp+"?";
}
System.out.println(temp);

这应该将字符串存储在临时文件中。

答案 3 :(得分:0)

Java 11提供了repeat()方法。

您可以使用

“?”.repeat(s1)位于sysout内部

System.out.print(“?”.repeat(s1))并可以删除for循环

它会重复吗? s1次。

答案 4 :(得分:0)

全部替换是正确的答案,但是如果出于某种原因您不得不进行for循环,则可以使用StringBuilder并附加一个?对于字符串中的每个字符,如下所示:

String userInput = "myString";
StringBuilder myBuilder = new StringBuilder();
for(int x = 0; x<userInput.length(); x++){
   myBuilder.append("?");
}
String myNewString = myBuilder.toString();

但是上述替换所有答案是正确的方法。