Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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_Function_Arguments - Fatal编程技术网

Java 函数返回未更改的输入,尽管在函数中对其进行了更改

Java 函数返回未更改的输入,尽管在函数中对其进行了更改,java,function,arguments,Java,Function,Arguments,关于下面的代码,我遇到了一个问题,所有的东西都运行得很好,但是我没有得到想要的输出 代码应该接受用户输入并打印,但所有字母的大小写都要颠倒。然而,即使toggleCase在将输入返回到toggleStringCase时不会出现问题,它也会恢复到发送到toggleCase之前的状态 我很难理解为什么会发生这种情况 谁能给我指一下正确的方向吗 理想情况下,我不想让你告诉我答案,而是帮助我找到解决问题的正确方法 package loopy; import java.io.*; public clas

关于下面的代码,我遇到了一个问题,所有的东西都运行得很好,但是我没有得到想要的输出

代码应该接受用户输入并打印,但所有字母的大小写都要颠倒。然而,即使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;
    }
}

Java中的参数是按值传递的。不能以这种方式更改传递给方法的值。但是,您正在返回所需的值-只需将其重新分配给变量:

input = toggleStringCase(input);

我想你可能想得到这个函数的输出。您似乎假设输入将被更改—事实并非如此。请参见

因为您不想要答案,请阅读此文。您不需要在ToggleStringCase循环中使用toggleCaseletter的返回值。您不必将char强制转换为int,反之亦然,您可以执行Ascivalue=>'a'&&Ascivalue 96&&Ascivalue<123谢谢,这正是我所需要的。再加上另一篇文章,再加上重读一切。这确实是我的讲师应该解释的。
toggleStringCase(input);