Нахождение n-й буквы в алфавите из текущей буквы - PullRequest
0 голосов
/ 20 февраля 2019

Итак, я пытаюсь взять букву из алфавита , введенную пользователем, и затем нахожу букву, которая находится на расстоянии 10 букв , и я хочу, чтобы она была обернута вокругалфавит , если буква 'z' или 'y' или что-то, что <буква 16. </p>

Я борюсь с циклической частью.Я знаю, что алфавит просто добавляется в ASCII table с числами, которые не являются 1-26, поэтому я не уверен, как с этим справиться.Это то, что я имею до сих пор.

public static void main(String[] args){

    Scanner input = new Scanner(System.in);
    System.out.println("Please input your favorite letter");
    char userLetter = input.next().charAt(0);
    char newLetter = (char) ((userLetter + 10) % 26);

    System.out.println("10 letters beyond your letter is " + newChar);

}

Кто-нибудь может помочь?

Ответы [ 4 ]

0 голосов
/ 20 февраля 2019

Попробуйте это:

public static void main(String[] args) {

    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Please input your favorite letter");
    char userLetter = input.next().charAt(0);
    int unumber = (int) userLetter;

    int newNum=unumber+10;


    if(newNum>122 || newNum>90){

        newNum=(unumber)-(26-10);
    }

    char newLetter = (char) (newNum);


    System.out.println("10 letters beyond your letter is " + newLetter);
}
0 голосов
/ 20 февраля 2019

Вместо этого вы можете просто использовать комбинацию valueOf.

String userLetter = ...;
int charValue = userLetter.charAt(0);
String next = String.valueOf((char)(charValue + 10));

Затем просто оператор if, чтобы определить, когда он достигает A или Z и изменить его соответствующим образом.

Надеюсь, это поможет.

0 голосов
/ 20 февраля 2019

это называется CaesarCipher s - ваш счет смены

//A Java Program to illustrate Caesar Cipher Technique 
public class CaesarCipher 
{ 
    // Encrypts text using a shift od s 
    public static StringBuffer encrypt(String text, int s) 
    { 
        StringBuffer result= new StringBuffer(); 

        for (int i=0; i<text.length(); i++) 
        { 
            if (Character.isUpperCase(text.charAt(i))) 
            { 
                char ch = (char)(((int)text.charAt(i) + 
                                s - 65) % 26 + 65); 
                result.append(ch); 
            } 
            else
            { 
                char ch = (char)(((int)text.charAt(i) + 
                                s - 97) % 26 + 97); 
                result.append(ch); 
            } 
        } 
        return result; 
    } 

    // Driver code 
    public static void main(String[] args) 
    { 
        String text = "ATTACKATONCE"; 
        int s = 10; 
        System.out.println("Text : " + text); 
        System.out.println("Shift : " + s); 
        System.out.println("Cipher: " + encrypt(text, s)); 
    } 
} 
0 голосов
/ 20 февраля 2019

Мы можем попытаться отобразить как строчные, так и прописные буквы алфавита в масштабе 1-26, затем сдвинуть и, возможно, обернуть, используя модуль.Наконец, мы отслеживаем величину сдвига, чтобы мы могли добавить ее обратно, чтобы сгенерировать сдвинутый символ.

Scanner input = new Scanner(System.in);
System.out.println("Please input your favorite letter");
char userLetter = input.next().charAt(0);

// get the ASCII value of the input character
int ascii = (int) userLetter;
// compute the shift (97 for lowercase, 65 for uppercase)
int shift = ascii > 90 ? 97 : 65;

int newPosition = (ascii - shift + 10) % 26;
newPosition += shift;

char newChar = (char) newPosition;
System.out.println("10 letters beyond your letter is " + newChar);
...