-1
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» к концу любых согласных и «» до конца гласных. Это было вдохновлено детским способом говорить в коде, так что только вы и друг знали, что говорит другой. Любая помощь будет принята с благодарностью, спасибо!проект шифрования Java (java.lang.StringIndexOutOfBoundsException)

+1

Я не думаю, что ваш код, как и опубликованный, находится в любом месте рядом с работой. Потратьте некоторое время, чтобы рассмотреть логику того, что вы пытаетесь сделать, и исправить свои петли соответственно. Я бы рекомендовал прочитать учебное пособие, в котором будут описаны инструкции 'break' и' continue'. –

+0

В третьем цикле for вы сравниваете 'uncoded.charAt (i) == ss.charAt (ii)' вместо 'uncoded.charAt (i) == ss.charAt (iii)'. Более того, этот цикл не должен быть вложенным. Слово совета; используйте разные буквы как переменные цикла. – Jyr

ответ

0

Вам не нужно так много циклов проверять, является ли символ в вашей закодированной строке гласным или согласным.

Я упростил вашу программу с помощью метода 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(); 
    } 
} 

Надеется, что это помогает!

 Смежные вопросы

  • Нет связанных вопросов^_^