Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 操纵字符串以生成具有相应索引的新字符串_Java_Stringbuilder - Fatal编程技术网

Java 操纵字符串以生成具有相应索引的新字符串

Java 操纵字符串以生成具有相应索引的新字符串,java,stringbuilder,Java,Stringbuilder,输入:进行一次自动编辑 String[]words=sb.toString().split(“//s”); StringBuilder sbFinal=新的StringBuilder(); 对于(int i=0;i使用简单的for循环和数组: public class SO { public static void main(String args[]) { String input = "have anic eday "; // Split the

输入:进行一次自动编辑

String[]words=sb.toString().split(“//s”);
StringBuilder sbFinal=新的StringBuilder();

对于(int i=0;i使用简单的
for
循环和数组:

public class SO {

    public static void main(String args[]) {
        String input = "have anic eday ";

        // Split the input.
        String[] words = input.split("\\s");
        int numberOfWords = words.length;
        int wordLength = words[0].length();

        // Prepare the result;
        String[] result = new String[wordLength];

        // Loop over the new words.
        for (int i = 0; i < wordLength; i++) {
            // Loop over the characters in each new word.
            for (int j = 0; j < numberOfWords; j++) {
                // Initialize the new word, if necessary.
                String word = result[i] != null ? result[i] : "";

                // Append the next character to the new word.
                String newChar = Character.toString(words[j].charAt(i));
                result[i] = word + newChar;
            }
        }

        for (String newWord : result) {
            System.out.println(newWord);
        }
    }
}

对循环和数组使用简单的

public class SO {

    public static void main(String args[]) {
        String input = "have anic eday ";

        // Split the input.
        String[] words = input.split("\\s");
        int numberOfWords = words.length;
        int wordLength = words[0].length();

        // Prepare the result;
        String[] result = new String[wordLength];

        // Loop over the new words.
        for (int i = 0; i < wordLength; i++) {
            // Loop over the characters in each new word.
            for (int j = 0; j < numberOfWords; j++) {
                // Initialize the new word, if necessary.
                String word = result[i] != null ? result[i] : "";

                // Append the next character to the new word.
                String newChar = Character.toString(words[j].charAt(i));
                result[i] = word + newChar;
            }
        }

        for (String newWord : result) {
            System.out.println(newWord);
        }
    }
}

虽然有人回答,但我制作了一个与您最初设计的版本更为相似的版本,只是使用sysout而不是return,但根据您的需要进行更改,或者只调整.split()行:

String sb=“have anic eday”;
String[]words=sb.split(\\s);//您需要使用BACKWARDSLASH“\\s”使其工作。
StringBuilder sbFinal=新的StringBuilder();
for(int i=0;i

您可以使用“//s”进行拆分,但是“/”或“\\s”似乎工作得很好。

虽然得到了回答,但我制作了一个与您最初设计的版本更为相似的版本,只是使用了sysout而不是return,但可以根据您的需要进行更改,或者只需调整.split()行:

String sb=“have anic eday”;
String[]words=sb.split(\\s);//您需要使用BACKWARDSLASH“\\s”使其工作。
StringBuilder sbFinal=新的StringBuilder();
for(int i=0;i


您可以使用“//s”进行拆分,但是“/”或“\\s”似乎可以很好地工作。

因此,您有x个单词,每个单词都有y个字符。您是否总是希望生成y个单词,每个单词都有x个字符?生成这些单词的确切逻辑是什么?因此您基本上希望采用
char[][]的转置
并将其连接到一个由单个空格字符分隔的
字符串中?是的。这是我试图解决的加密问题的一部分。我将问题划分为模块,这是最后一部分。但我上面显示的输出是意外的。我的循环逻辑是否错误?是的,但我想使用stri查看问题ngbuilder@JacobG.所以你有x个单词,每个单词都有y个字符。你总是想用x个字符来构建y个单词吗?构建每个单词的确切逻辑是什么?所以你基本上想采用
char[][]的转置
并将其连接到一个由单个空格字符分隔的
字符串中?是的。这是我试图解决的加密问题的一部分。我将问题划分为模块,这是最后一部分。但我上面显示的输出是意外的。我的循环逻辑是否错误?是的,但我想使用stri查看问题ngbuilder@JacobG.非常感谢,但我一直在寻找我的代码中的错误。非常感谢,但我一直在寻找我的代码中的错误。错误是由于拆分(“//s”),非常感谢。我很高兴解决了这个问题。显然,现在人们只是投了反对票。但是先生,请继续帮助像我这样的初学者!(Y)@institute显然,
sb.split(“);
sb.split(\\s”);
应该给出相同的输出。是的,但是OP使用了forwardslashes“/”,而不是。毕竟,我指出了要求的那堆代码,并给出了一个有效的解决方案和解释,即使downvoter会使它有所不同。错误是由于split(//s),非常感谢。我很高兴解决了这个问题。显然,现在人们只是投了反对票。但是先生,你继续帮助像我这样的新手!(Y)@institute显然,
sb.split(“”;
sb.split(\\s”);
应该给出相同的结果。是的,但是OP使用了前斜杠“//毕竟,我指了指被要求的那一堆,给出了一个有效的解决方案和解释,即使落选者会让它有所不同。
hae
and
via
ecy
String sb = "have anic eday";
String[] words = sb.split("\\s"); //you need to use BACKWARDSLASH "\\s" to get it to work.
StringBuilder sbFinal = new StringBuilder();


for (int i = 0; i < words[0].length(); i++) {
    for (int j = 0; j < words.length; j++) {
        sbFinal.append(words[j].charAt(i));
    }
    sbFinal.append(" ");
}

System.out.println(sbFinal.toString());