将句子转换为数组并删除字符并打印新句子

swe*_*men 3 java arrays string

免责声明:这是一项家庭作业

该程序的目标是:问一个句子然后: - 将大写转换为小写(不使用.toLowercase()) - 删除所有不是az,AZ和0-9的字符 - 打印新句子 - ......更多内容但是不重要的.

好的,我做了什么.

  • 我将我的String(句子)转换为char数组.
  • 我创建了一个for循环来遍历我的数组中的所有字符
  • 如果char是大写的,我使用ASCII将其转换为小写

我遇到的问题是: - 看起来我更改了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) {
      }

    }
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能指出我正确的方向?

谢谢 :)

The*_*kis 5

请考虑以下行:

char c = zinArray[i];
Run Code Online (Sandbox Code Playgroud)

分配复制值(如果是类实例,则为引用).所以你已经创建了一个角色的副本zinArray[i].这意味着更改变量c的值不会更改存储的值zinArray[i].您必须对数组项执行更改,如下所示:

zinArray[i] = (char)(c + 32);
Run Code Online (Sandbox Code Playgroud)