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;
    }

有什么想法吗?

最佳答案

那里有几个问题。

  1. 您已声明 print循环体内。它不存在于它之外。所以你需要移动你的String print 在循环之外

  2. 您还在每次循环迭代中为其赋值,这将覆盖它之前的值。目前还不清楚您想做什么,但您不会想这样做。

  3. 这两行也没有任何意义:

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

    因为 phrase 中只有一个条目,你最终会得到 print具有相同的值 word曾经。

  4. 您似乎期望 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 - 本书带您了解 Java API?

java - 什么是 java.util.Random.next(n) 的 O(n)

java - 用空格分割字符串

Java 正则表达式匹配未按预期工作

python - 如何将字典列表拆分为 2 个单独的字典列表并进行相等性检查

java - 循环将无法正常执行

c++ - 来自另一个 bool 函数的一个字符

java - 如何找到常量的值

java - NamedEntityGraph 无法解析为类型

string - Lua:返回 "{foo}{bar}"的内容