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

时间:2013-09-10 10:34:43

标签: java arrays string

免责声明:这是家庭作业

该计划的目标是:提出一个句子然后: - 将大写转换为小写(不使用.toLowercase()) - 删除非a-z,A-Z和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) {
      }

    }
    }
}

有人能指出我正确的方向吗?

谢谢:)

3 个答案:

答案 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
        }
      }
    }
}