2015-11-02 7 views
0

У меня возникли проблемы с этим заданием. Запрос состоит в том, чтобы пользователь вводил сообщение для кодирования. Кодировка будет принимать сообщения и сдвигать каждый символ 4 пробела вправо в соответствии с таблицей ASCII. Я думаю, что у меня правильные методы шифрования и дешифрования (?), Но я не могу сказать, потому что не могу понять, как получить строку, введенную в методы.Неисправность получения строки другим способом

import java.util.Scanner; 

public class EncryptDecrypt { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Welcome to my encrypting/decrypting program"); 
     System.out.println("_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "); 
     System.out.println("(1) Encrypt a message."); 
     System.out.println("(2) Decrypt an encrypted message."); 
     System.out.println("(3) Exit."); 
     System.out.print("Your choice? "); 
     int choice = input.nextInt(); 
     if (choice != 3) { 
      if (choice == 1) { 
       System.out.println("Please enter a message to be encrypted: "); 
       String message = input.nextLine(); 
       System.out 
         .println("The encrypted string is " + encrypt(message)); 

      } 
      else { 
       System.out.println("Please enter a string to be decrypted: "); 
       String encrypted = input.nextLine(); 
       System.out.println(
         "The decrypted string is " + decrypt(encrypted)); 
      } 

     } else { 
      System.out.println("The program has been exited."); 
     } 
    } 

    public static String encrypt(String message) { 
     String encrypted = " "; 
     for (int i = 0; i < message.length(); i++) { 
      encrypted += (char) (message.charAt(i) + 4); 
     } 
     return encrypted; 

    } 

    public static String decrypt(String encrypted) { 
     String unencrypted = " "; 
     for (int i = 0; i < encrypted.length(); i++) { 
      unencrypted += (char) (encrypted.charAt(i) - 4); 

     } 
     return unencrypted; 
    } 
} 
+0

Что вы видите как сообщение после ввода пользователем строки? – AbtPst

+0

Это никогда не доходит до этой точки. когда я запускаю программу и вводю выбор (1, 2 или 3), он переходит к этому выбору и распечатывает это ... «Добро пожаловать в мою программу шифрования/дешифрования _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (1) шифровать сообщение (2) Расшифровать зашифрованное сообщение (3) Выход Ваш выбор 1 Пожалуйста, введите шифрованное сообщение:...? зашифрованное string is BUILD SUCCESSFUL (общее время: 1 секунда) –

ответ

0

Эй, я узнал, что он должен что-то сделать с Линией.

int choice = input.nextInt(); 

Я не знаю, почему это не работает, но я полагаю, что вы могли бы использовать

int choice = Integer.parseInt(input.nextInt()); 

вместо этого. Это работает, но, к сожалению, я понятия не имею, почему.

+0

Спасибо за ответ, но я думаю, что он имеет какое-то отношение к моему утверждению if. Когда я запускаю программу и вводю выбор из 1, 2 или 3. Это идет к этот выбор и просто запускает операторы и заканчивает программу, не позволяя пользователю вводить строку –

+0

Нет, это не утверждение if. Если вы задали выбор directl y до 3 без ввода от nextInt, он будет работать правильно, поэтому я уверен, что он имеет какое-то отношение к методу nextInt. – CodeX

0

Итак, мой брат помог мне и понял, что мне нужно открыть новый сканер в вариантах 1 & 2, а затем он позволит пользователю ввести строку и пройти через остальную часть кода.

+1

Итак, вы не удосужились прочитать дублирующий вопрос (см. Первый комментарий к вашему вопросу)? – Tom

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