2017-01-17 6 views
-3

Я беру введенное сообщение, добавляя 2 к значению Юникода каждой буквы, а затем распечатывая его. У меня возникают проблемы, включая пробелы между словами. Если бы фраза была сырной пиццей, она бы распечатала «ejggj», а затем остановилась в пространстве. Как это исправить?Как сохранить пробелы в кодированном сообщении?

package exercises; 
import java.util.Scanner; 
public class Ex10 { 

     public static void main(String[] args) { 
      Scanner scanner = new Scanner(System.in); 
       //Ask for message 
       System.out.println("Enter a string: "); 
       String message = scanner.next(); 

       char[] array = message.toCharArray(); 

       //Encode message 
       for(int i = 0; i < array.length; i++) 
       { 
        char letter; 
        letter = array[i]; 
        if (array[i] =='y') 
        { 
         array[i] = 'a'; 
        } 
        else if (array[i] == 'z') 
        { 
         array[i] = 'b'; 
        } 
        else if (array[i] == letter) 
        { 
         letter += 2; 
         array[i] = letter; 
        } 
        else 
        { 
         letter = ' '; 
        } 
       } 
       //Give back encoded message 
       System.out.print("Encoded message: "); 
       System.out.println(array); 
     }//main 
    }//class 
+0

'if (letter == '') continue;' –

ответ

1

Mohsen_Fatemi частично ошибается. В рамках этого вопроса он совершенно не прав.

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

Метод scanner.next() будет читать до тех пор, пока не столкнется с пробелом, будь то пространство, вкладка или новая строка. Для получения полного ввода необходимо использовать nextLine().

Mohsen_Fatemi прав относительно вашего алгоритма. Но этот вопрос был не в этом. Однако не отклоняйте его.

+0

Bruno Delor спасибо! Я понимаю, что вы имели в виду, и вы много помогли. Моя программа работает сейчас. –

+0

Добро пожаловать. Не стесняйтесь читать официальную документацию java, а также просматривать различные методы, предлагаемые классом сканера. Я дал вам краткое представление о том, как работает Scanner, но класс может быть использован для использования других вещей в качестве разделителя. По умолчанию это просто пробел, но вы можете установить его для других символов (например, для чтения CSV, хотя это не эффективный способ чтения CSV-файла) –

+0

@BrunoDelor еще раз упомянуть мое имя :) –

0

изменить код INT таким образом, вы хотите, чтобы избежать, когда у вас есть место в строке, так что я добавил условие if(array[i]==' ') continue;, когда мы видим символ пробела мы пропускаем этот раунд цикла и перейти к следующей итерации

for(int i = 0; i < array.length; i++) { 
     if (array[i] =='y'){ 
      array[i] = 'a'; 
     }else if (array[i] == 'z'){ 
      array[i] = 'b'; 
     }else{ 
      if(array[i]==' ') continue; 
      array[i] += 2; 
     } 
} 
+0

@I. Adoubleo, если вы считаете это правдой, отметьте мой ответ как истинный, спасибо –

+0

Вы не отвечаете на его вопрос. Вы правы в его алгоритме, но его проблема была где-то в другом месте. –

+0

@BrunoDelor zoro ... –

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