java - 尽管在函数内更改了输入,但函数返回的输入保持不变

标签 java function arguments

就下面的代码而言,我遇到了一个问题,一切运行正常,但我没有得到所需的输出。

代码应该接受用户输入并打印它,但所有字母的大小写都颠倒。然而,即使toggleCase工作没有问题,一旦输入返回toggleStringCase,它就会恢复到发送到toggleCase之前的状态。

我无法理解为什么会发生这种情况。

有人可以给我指出正确的方向吗?

理想情况下,我不希望你告诉我答案,而只是帮助我采取正确的方法来解决这个问题。

package loopy;
import java.io.*;

public class loopy {
    public static void main (String[] args) throws IOException {
        // TODO: Use a loop to print every upper case letter
        for (int i = 65; i < 91; i++) {
            System.out.println((char)i);
        }
        // TODO: Get input from user. Print the same input back but with cases swapped. Use the helper functions below.
         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        String input = in.readLine();
        in.close();     

        toggleStringCase(input);

        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
        out.write(input);
        out.close();
    }

    //Takes a single Character and reverse the case if it is a letter
    private static char toggleCase(char c) {
        int asciiValue = (int) c;
        if (asciiValue > 96 && asciiValue < 123){
            asciiValue = asciiValue - 32;
        }
        else if (asciiValue > 64 && asciiValue < 91){
            asciiValue = asciiValue + 32;
        }
        else {

        }
        c = (char) asciiValue;
        return c;
    }

    // Splits a string into individual characters that are sent to toggleCase to have their case changed
    private static String toggleStringCase(String str) {
        String reversedCase = new String();
        for (int i = 0; i < str.length(); i++) {
            char letter = str.charAt(i);
            toggleCase(letter);
            reversedCase = reversedCase + letter;
        }
        str = reversedCase;
        return str;
    }
}

最佳答案

toggleStringCase(input);

我想您可能想获得该函数的输出。您似乎假设输入将被更改 - 事实并非如此。请参阅Is Java "pass-by-reference" or "pass-by-value"?

关于java - 尽管在函数内更改了输入,但函数返回的输入保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017721/

相关文章:

java - Selenium:在同一选项卡中打开链接

java - 如何将 RelativeLayout 旋转 180 度?

javascript - 在具有原型(prototype)属性的匿名对象上使用 new?

php - 在函数内部调用对象

c++ - Eigen中的内存是如何布局的?

java - 方法(String str)和方法(Final String str)有什么区别

javascript - 重新排列数组的更直观方式

java - HTTP SOAP 发布请求

Java 小程序错误

c++ - 函数返回错误值