java - 如何打印字串

原文 标签 java string for-loop return

我有这个字符串要返回,但是我不能,因为它说“ print”不能解析为变量。这是我的代码:

public static String enrcyptText(String str, int shift){
        int count = 0;
        String[] parts = str.split("[\\W]");
        for(String word : parts){ 
                shift = shift * (count + 1) + 1;
                count++;
                encryptWord(word, shift);
                String[] phrase = new String[]{word};
                String print = String.join(" ", phrase);
            }
        return print;
    }


任何想法?

最佳答案

那里有几个问题。


您仅在循环体内声明了print。它不存在。因此,您需要将String print移动到循环之外。
您还需要在每次循环迭代时为其分配值,这将覆盖其先前的值。目前尚不清楚您想做什么,但您不想这样做。
这两行也没有任何意义:

String[] phrase = new String[]{word};
String print = String.join(" ", phrase);


由于phrase中只有一个条目,因此您最终会得到print具有与word相同的值。
您似乎希望encryptWord可以修改传递给它的字符串。不可以


尝试一下,我想您的目标是对句子中的单个单词进行“加密”,然后将结果重组为以空格分隔的一组加密单词。如果是这样,请参阅评论:

public static String enrcyptText(String str, int shift){
    int count = 0;
    String[] parts = str.split("[\\W]");
    // For updating the array, better to use the classic
    // for loop instead of the enhanced for loop
    for (int i = 0; i < parts.length; ++i){ 
        shift = shift * (count + 1) + 1;
        count++;                      // Could do this before previous line and remove the + 1 in (count + 1)
        parts[i] = encryptWord(parts[i], shift); // See note below
    }
    return String.join(" ", parts);
}


请注意,我使用的是encryptWord的返回值。这是因为Java中的字符串是不可变的(无法更改),因此encryptWord不能更改我们传递给它的内容。它只能给我们返回一个新字符串来代替。

关于java - 如何打印字串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924678/

相关文章:

java - Thymeleaf 无法解析多模块 Spring Boot 项目中的模板

java - StringBuilder花时间存储字符串值

linux - 使用命令行用一个逗号替换连续的空格

c# - 在 '< List >' 中检索数据/数据

c++ - 变量嵌套 for 循环

java - Java无休止的while循环

java - 如何在没有序列的 pom.xml 中添加模块

javascript - 如何在Javascript中的字符串末尾添加空格

javascript - 用30个符号更新每个h1标签(h1标签下面3个段落中的10个符号)

java - Pig JVM java堆空间错误