0

在这段代码中,我一直在尝试使用 for 循环将数组中的字符过滤到第二个数组,但我无法做到。谁能告诉我我的代码到底有什么问题?

public class Deel1 {

    public static void main(String[] args) {
        String zinInvoer = getInput();
        String zinUitvoer = filterZin(zinInvoer);
    }

    static String getInput() {
        Scanner scan = new Scanner(System.in);
        String zinInvoer = "";

        System.out.println("Voer een zin in: ");
        if (scan.hasNextLine()) {
            zinInvoer = scan.nextLine().trim();
        }

        if (zinInvoer.equals("")) {
            System.out.println("Geen invoer!");
            System.exit(0);
        }
        return zinInvoer;
    }

    static String filterZin(String zinInvoer) {
        String zinUitvoer = "";
        char ongefilterd[] = zinInvoer.toCharArray();
        String nogFilteren = new String(ongefilterd);
        char a = nogFilteren.charAt(97);
        for (a = 97; a <= 122; a++) {
            a = a += 32;  
            char gefilterd[] = //second array to be printed
        }
        System.out.println("Gefilterd: " + zinUitvoer);
        return zinInvoer;
    }
}
4

1 回答 1

0

对不起,如果它惹恼了你,但我不得不把你的变量翻译成英文,以便弄清楚它们的目的是什么。

首先,当字符串长度小于 98 个字母时,它总是会抛出异常,因为它会查找第 97 个字母。其次,“filterZin”中的 for 循环只会过滤字母 #98,我猜这不是你的意图。此外, geFilterd 可能应该在 for 循环之外创建,并且在 for 循环中你(我猜)想要做

geFilterd[a]=a+32;
a+=32;

因为我无法弄清楚您对该程序的总体目标是什么,所以我制作了一个版本,它可以完成我认为您正在尝试做的事情,但同样,我不知道。

import java.util.Scanner;

public class Deel1 {

public static void main(String[] args) {
    String phraseInput = getInput();
    filterPhrase(phraseInput);
}

static String getInput() {
    Scanner scan = new Scanner(System.in);
    String phraseInput = "";

    System.out.println("Voer een zin in: ");
    if (scan.hasNextLine()) {
        phraseInput = scan.nextLine().trim();
    }

    if (phraseInput.equals("")) {
        System.out.println("Geen invoer!");
        System.exit(0);
    }
    return phraseInput;
}

static String filterPhrase(String phraseInput) {
    String phraseOutput = "";
    char onFiltered[] = phraseInput.toCharArray();
    String currentFilter = new String(onFiltered);

//        for (a = 97; a <= 122; a++) {
//            a = a += 32;  
//            //char filtered[] = //second array to be printed
//        }
    char[] filtered = new char[26];
    for(int i=97;i<=122;i++){
        char a = currentFilter.charAt(i);
        filtered[i-97]= (char) (a+32);
    }
    System.out.println("filtered: " + filtered.toString());
    return phraseInput;
}
}
于 2014-08-19T20:23:42.530 回答