2011-06-11 5 views
1

Я пытаюсь использовать цикл for для проверки каждого символа в массиве и печати символа, его позиции в массиве и типа символа (гласный, согласный , и т.д.). У меня это до сих пор:Использование цикла for для проверки массива

char[] myName = new char[] {'J', 'o', 'h', 'n', ' ', 'D', 'o', 'e'}; 

     System.out.print("\nMy name is: "); 

      for(int index=0; index < myName.length ; index++) 
      System.out.print(myName[index]); 

      for(char c : myName) { 
      if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') 
      { 
       System.out.println("The character located at position is a vowel."); 
      } 
      else if (c == 'j' || c == 'h' || c == 'n' || c == 'd') 
      { 
       System.out.println("The character located at position is a consonant."); 
      } 
      else if (c == ' ') 
      { 
       System.out.println("The character located at position is a space."); 
      } 

Как напечатать расположение символа

+0

, что случилось с тем, что у вас есть? – Adam

+0

Вы ищете способ определить, является ли текущее письмо проверяемым гласным или согласным? Кажется, что вы на правильном пути, но вам нужно придумать способ определить эту часть. –

+0

Я не уверен, как его напечатать, какой тип персонажа он есть. – JDB

ответ

3

Вы находитесь на правильном пути (т.е. «Символ х, расположенный в позиции х является гласной.»). Ваш цикл в порядке, но попробуйте синтаксис foreach, если вы на самом деле не необходимость индекс, например:

char[] myName = new char[] {'J', 'o', 'h', 'n', ' ', 'D', 'o', 'e'}; 

System.out.print("\nMy name is: "); 

for(char c : myName) { 
    System.out.print(c); 
} 

Теперь добавьте в некоторых логиках:

int i = 0; 
for(char c : myName) { 
    i++; 
    // Is the char a vowel? 
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') { 
     // do something - eg print in uppercase 
     System.out.print(Character.toUpperCase(c) + " at position " + i); 
    } else { 
     // do something else - eg print in lowercase 
     System.out.print(Character.toLowerCase(c) + " at position " + i); 
    } 
} 

Вы должны понять, что вы хотите сделать здесь. Теперь идите сделать это :)

Редакцией: Чтобы показать использование позиции, которая немного неуклюжий, но еще меньше кода, чем стандартный цикл

+0

Просто небольшое дополнение, в случае, если вы действительно обрабатываете символы, предпочитаете случай переключения, а затем. – sangupta

+0

Спасибо. Это было действительно полезно. Еще один вопрос ... как бы напечатать местоположение символа (т. Е. «Символ x, расположенный в позиции x является гласным») – JDB

+0

@JDB - вот почему цикл 'для каждого' ** не подходит * * в этом конкретном примере. –

0

Советы:

  • Вы должны используйте вид цикла for, который вы используете в настоящее время. Индекс значения значения будет полезен в вашем выпуске.

  • Класс Character имеет ряд методов для классификации символов и для преобразования из верхнего регистра в нижний регистр & наоборот.

  • Вы также можете использовать == для тестирования персонажей ...

  • Вы также можете использовать переключатель заявление для различения разных видов письма, а также использовать default отделение для отдыха.

+0

Я обновил код. Я на правильном пути? – JDB

+0

Вид. Вы еще не обрабатываете буквы в верхнем регистре или классифицируете символы, которые не являются буквами, а не пробелами.Как далеко вы должны идти, зависит от того, как именно была заявлена ​​проблема; то есть какие предположения вы разрешаете делать о входных символах. Теперь вы также можете включить позицию в выходной файл. –

0
 char[] myName = new char[] {'J', 'o', 'h', 'n', ' ', 'D', 'o', 'e'}; 

    System.out.print("\nMy name is: "); 

     for(int index=0; index < myName.length ; index++) 
     char c = myname[index]; 
     if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') 
     { 
      System.out.println("The character " + c + "located at position " + index + " is a vowel."); 
     } 
    ... } 
Смежные вопросы