2016-04-09 2 views
0

Круг Алфавит Введите букву A & номер N, печатным буквам часто предшествуют единицы AN (примечание: буквы, расположенные по кругу, поэтому регистр входных букв равен «z» и N = 1, ответ проект «а») Input б 1 выход сКругный алфавит

import java.util.Scanner; 

class UnsolvedProblem { 
    public static void tinh(String ch, int numb) { 
     String[] str = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", 
       "t", "u", "v", "w", "x", "y", "z" }; 
     for (int i = 0; i < str.length; i++) { 
      if (ch.equals(str[i])) 
       System.out.print(str[i + numb] + " "); 
     } 
    } 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     String ch = sc.next(); 
     int numb = sc.nextInt(); 
     tinh(ch, numb); 
    } 
} 

Как это сделать с буквой г и номером 1 он должен вернуть буква а

+0

Два способа исправить существующий код: (1) сначала посмотрите, является ли 'i + numb' слишком большим, и если это так, вычтите из него константу, прежде чем индексировать в массив; (2) используйте оператор '%'. – ajb

ответ

1

Вместо

if (ch.equals(str[i])) 
System.out.print(str[i + numb] + " "); 

Попробуйте обработки переполнения с оператором модуля:

if (ch.equals(str[i])) { 
int overflowed = (i + numb) % str.length; 
System.out.print(str[overflowed] + " "); 
} 
+0

@ajb да, хорошая точка. – nhouser9

0

Вы можете лечить персонаж как int и добавьте значение смещения к нему напрямую.

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