java - 尽管在函数内更改了输入,但函数返回输入不变
问题描述
就以下代码而言,我遇到了一个问题,即一切都运行良好,但我没有得到所需的输出。
代码应该接受用户输入并打印它,但所有字母的大小写都颠倒了。然而,即使在将输入返回到 toggleStringCase 后,toggleCase 正常工作,它也会恢复到它被发送到 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);
我想你可能想得到那个函数的输出。您似乎假设输入将被更改 - 事实并非如此。请参阅Java 是“按引用传递”还是“按值传递”?
推荐阅读
- amazon-web-services - 创建 AuroraDB 时未出现子网
- android - 用于后台服务的 Android O 和线程本地存储
- dynamics-crm - 用户没有必要的权限。请问CRM是哪一个?
- angular - 从模型创建的角度动态形式
- python - 我应该在 Django 的保存方法中在哪里使用原子事务?
- archer - Archer 子窗体中的计算字段
- postgresql - Heroku/Ecto/Postgres 28000 致命:主机“115.159.183.134”、用户“postgres”、数据库“postgres”、SSL 关闭没有 pg_hba.conf 条目
- java - 错误的源文件:无法导入子目录 JAVA
- django - Django:如何序列化一对多关系
- shell - 多个“。”的外壳文件扩展名