【问题标题】:Java encryption project (java.lang.StringIndexOutOfBoundsException)Java 加密项目 (java.lang.StringIndexOutOfBoundsException)
【发布时间】:2016-12-29 04:57:43
【问题描述】:
import java.util.Scanner;
public class Oppish_Coder2 {

    public static void main(String[] args) {
        String s = "bcdfghjklmnpqrstvwxz";
        String ss = "aeiouy";

        System.out.println("Enter line to encrypt: ");

        Scanner sc = new Scanner (System.in);
        String uncoded = sc.next();

        System.out.println("Encrypted line: ");

            for (int i = 0; i < uncoded.length(); i++){

                for (int ii = 0; ii < s.length(); ii++){

                    if (uncoded.charAt(i) == s.charAt(ii)){
                        System.out.print(uncoded.charAt(i) + "op ");
                    }
                    else {
                        for (int iii = 0; iii < ss.length(); iii++){
                            if (uncoded.charAt(i) == ss.charAt(ii)){
                                System.out.print(uncoded.charAt(i) + " ");
                            }
                        }
                    }   
                }
            }
        sc.close();
    }
}

我一直在为这个项目工作,但最近我觉得我离让它工作很近了,但是抛出了一个错误,我不确定如何修复它。该代码的目的是在任何辅音的末尾添加一个“op”,在元音的末尾添加一个“”。这是受童年时用代码说话的方式启发的,所以只有你和朋友知道对方在说什么。任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 我不认为您发布的代码可以正常工作。请花一些时间考虑您正在尝试做的事情的逻辑并相应地修复您的循环。我建议阅读涵盖breakcontinue 语句的教程。
  • 在第三个 for 循环中,您将比较 uncoded.charAt(i) == ss.charAt(ii) 而不是 uncoded.charAt(i) == ss.charAt(iii)。此外,该循环不应嵌套。忠告;使用不同的字母作为循环变量。

标签: java exception encryption project indexoutofboundsexception


【解决方案1】:

您不需要循环这么多次来检查未编码字符串中的字符是元音还是辅音。

我使用String.indexOf 方法简化了您的程序。您只需检查未编码字符串中的字母是否存在于vowels 字符串或consonants 字符串中。

这里是:

import java.util.Scanner;

public class Oppish_Coder2 {

    public static void main(String[] args) {
        String consonants = "bcdfghjklmnpqrstvwxz";
        String vowels = "aeiouy";

        System.out.println("Enter line to encrypt: ");

        Scanner sc = new Scanner(System.in);
        String uncoded = sc.next();

        System.out.println("Encrypted line: ");

        for (int i = 0; i < uncoded.length(); i++) {
            char c = uncoded.charAt(i);
            if (consonants.indexOf(c)>-1) {
                System.out.print(c + "op ");
            } else if (vowels.indexOf(c)>-1) {
                System.out.print(c + " ");
            }
        }
        sc.close();
    }
}

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2019-06-15
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多