Проблема с Pig Latin не печатает весь текст

Так что я новичок в кодировании, и у меня возникли некоторые проблемы... Предполагается, что моя программа запрашивает ввод у пользователя, и ей нужно будет предположить, что все вводимые данные являются строчными... и нужно предположить, что нет лишних пробелов, и нужно будет предположить, что он заканчивается точкой. Затем программа переведет текст на латинский язык свиньи... Просто, если вам нужны правила для латинского языка свиньи, они есть, если слово набивается гласной, добавьте тире и "путь" до конца... В противном случае добавьте тире переместите первую букву в конец и добавьте "ау"... Теперь я знаю, что мой код может быть лучше, но я просто хочу сначала запустить его, а затем изменить его, если мне это тоже нужно. Поэтому моя проблема в том, что код выполняется, но он не будет печатать никакого текста, кроме первого слова. И другой текст должен быть на латинском, я вставил код раньше. Так что любая помощь будет потрясающей... Спасибо.

import java.util.Scanner;
public class Piglat{
     public static void main(String [] args) {

     Scanner scanner = new Scanner(System.in);
     String text, pigLatin;
     char first;

     System.out.print("Enter a line of text: ");
     text= scanner.next();

     first = text.charAt(0);

     if (first == 'a' || first == 'e' || first =='i'||
         first == 'o' || first == 'u')
         pigLatin = text + "-way";

     else
         pigLatin = text.substring(1) + "-" + text.charAt(0) + "ay";

     System.out.println("Input : " + text);
     System.out.print("Output: " + pigLatin);
  }
}

Мой вывод

Введите строку текста: это текст.

Вход: это

Выход: гист-тай

2 ответа

import java.util.Scanner;
public class piglat{
   public static void main(String [] args) {

   Scanner scanner = new Scanner(System.in);
   String text, pigLatin;
   char first;

   System.out.print("Enter a line of text: ");
   text= scanner.nextLine();
   first = text.charAt(0);

   if (first == 'a' || first == 'e' || first =='i'||
       first == 'o' || first == 'u') 
       pigLatin = text + "-way";

   else
       pigLatin = text.substring(1) + "-" + text.charAt(0) + "ay";

   System.out.println("Input : " + text);
   System.out.print("Output: " + pigLatin);
}
}

text= scanner.next();

Метод scanner.next() возвращает "следующий токен", который в данном случае скорее всего означает "следующее слово". Так как ваша переменная text включает только 1 слово из входного предложения, вот с чем работает весь ваш код.

Возможно, вам нужно создать цикл, который будет читать из next () несколько раз, или использовать что-то другое, кроме next (), чтобы прочитать полную строку текста, которую вы затем разбиваете на слова и применяете к каждому слову.

Метод nextLine() может быть полезен (но я не могу сказать наверняка, я не использовал это в течение длительного времени).

Чтобы разбить строку текста на отдельные слова, смотрите раздел Как разделить строку в Java и http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

Другие вопросы по тегам