免责声明:这是家庭作业
该计划的目标是:提出一个句子然后: - 将大写转换为小写(不使用.toLowercase()) - 删除非a-z,A-Z和0-9的所有字符 - 打印新句子 - ......更重要但不重要的东西。
好的,我做了什么。
我遇到的问题是: - 看起来我更改了char C但是它没有在我的数组中以小写形式存储? - 如何检测不允许的字符,并从我的数组中删除它?
我的代码:
import java.util.Scanner;
public class sentence {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String zin = "";
System.out.print("Voer een zin in: ");
if (scanner.hasNextLine())
zin = scanner.nextLine().trim();
if (zin.equals("")) {
System.out.print("Geen Invoer!");
System.exit(0);
}
char[] zinArray = zin.toCharArray();
for (int i = 0; i < zinArray.length; i++) {
char c = zinArray[i];
if (c >= 'A' && c <= 'Z') {
c = (char)(c + 32);
} else if (c >= 58 && c <= 64) {
} else if (c >= 91 && c <= 96) {
} else if (c 123 && c <= 126) {
}
}
}
}
有人能指出我正确的方向吗?
谢谢:)
答案 0 :(得分:5)
考虑以下一行:
char c = zinArray[i];
分配复制值(如果是类实例,则为引用)。因此,您已在zinArray[i]
创建了该角色的副本。这意味着更改变量c
的值不会更改zinArray[i]
中存储的值。您必须对数组项执行更改,如下所示:
zinArray[i] = (char)(c + 32);
答案 1 :(得分:1)
将代码更改为:
c = (char)(c + 32);
zinArray[i]=c;
基本上你将大写转换为小写。那部分是正确的,但你不是将小写字母存回数组,这就是为什么它没有在输出中显示。
答案 2 :(得分:1)
这是答案代码:
问题是你从未将值分配回数组,而不是当你想做小写,而不是取消标志
import java.util.Scanner;
public class sentence {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String zin = "";
System.out.print("Voer een zin in: ");
if (scanner.hasNextLine())
zin = scanner.nextLine().trim();
if (zin.equals("")) {
System.out.print("Geen Invoer!");
System.exit(0);
}
char[] zinArray = zin.toCharArray();
for (int i = 0; i < zinArray.length; i++)
{
char c = zinArray[i]; // ASSINGING A LOWER CASE
if (c >= 'A' && c <= 'Z')
{
zinArray[i] = (char)(c + 32);
}
else if ((c >= 58 && c <= 64) ||
(c >= 91 && c <= 96) ||
(c 123 && c <= 126))
{
zinArray[i] = ' ';// REMOVING SIGNS
}
}
}
}