2017-02-04 11 views
-1

Привет, поэтому я пытаюсь сделать этот латинский код свинца, в котором первая буква удалена из слов и отправлена ​​в конец слова, при добавлении «ay» к конечному результату , Я закончил весь свой код, в котором он должен выводить правильный результат, кроме моей проблемы с фактическим выводом кода. Я получаю сообщение об ошибке сразу после ввода пользователем предложения.Ошибка при вызове другого метода в другом методе

Вот мой код:

package piglatin; 

    import java.util.Scanner; 

    public class PigLatinTest { 
public static String str; 
public static String[] words; 

public static String[] printLatinWords() 
{ 
    System.out.println("Enter a Sentence: "); 
     Scanner scanner = new Scanner(System.in); 
     str = scanner.nextLine(); 
     words = str.split(" "); 
     //System.out.println(words); 
     return words; 
} 

public static String[] printPigLatinWords() 
{ 
    for (int i = 0; i < words.length; i++) { 
     char firstLetter = words[i].charAt(0); 
     words[i] = words[i].substring(1); 
     words[i] = words[i] + firstLetter + "ay"; 
     //System.out.println(words[i]); 
     //If you want the words to be in the same line, then this could help     instead of System.out.println: 
     System.out.print(words[i] + " "); 
    } 
    return words; 

} 

public static void main(String[] args) 
{ 
    words = printLatinWords(); 
} 

    } 

    /* 
    Enter a Sentence: 
    Hello from the other side 
    */ 
+1

И какая у вас ошибка? – rustyx

+0

'public static String words;' не так же, как 'String [] words' – nullpointer

+0

@RustyX моя ошибка is-> Исключение в потоке" main "java.lang.NullPointerException \t at piglatin.PigLatinTest.printPigLatinWords (PigLatinTest.java: 21) \t at piglatin.PigLatinTest.main (PigLatinTest.java:33) – JustAJAVAGUY

ответ

3

У вас есть static пользователей, и вы затеняете их локальными переменными. Вы устанавливаете значения локальных переменных, в то время как ваши члены static остаются неинициализированными. Предложение:

public static String[] printLatinWords() 
{ 
    System.out.println("Enter a Sentence: "); 
     Scanner scanner = new Scanner(System.in); 
     str = scanner.nextLine(); 
     words = str.split(" "); 
     //System.out.println(words); 
     return words; 
} 

Конечно, words должен быть массивом вместо String то:

public static String[] words; 

EDIT:

Поскольку у вас есть массив String элементов, вы должны повторять его :

public static String[] printPigLatinWords() 
{ 
    for (int i = 0; i < words.length; i++) { 
     char firstLetter = words[i].charAt(0); 
     words[i] = words[i].substring(1); 
     words[i] = words[i] + firstLetter + "ay"; 
     System.out.println(words[i]); 
     //If you want the words to be in the same line, then this could help instead of System.out.println: 
     //System.out.print(words[i] + " "); 
    } 
    return words; 

} 

EDIT2:

main метод предложение:

public static void main(String[] args) 
{ 
    printLatinWords(); 
    printPigLatinWords(); 
} 
+0

, но затем в моем втором методе, как бы удалить первую букву и добавить ее в конец, если это массив? – JustAJAVAGUY

+0

@JustAJAVAGUY см. Мое редактирование. –

+0

Я просто попробовал это, и он почему-то застрял после ввода ввода. Что входит в основной метод? Я думаю, что что-то не так с основным методом – JustAJAVAGUY

1

Предполагая, что ошибка, что я думаю, что это, вы не устанавливать свои public static переменные в любом месте (ни str, ни words). Скорее, вы устанавливаете локальные переменные в свой метод printLatinWords.

Я предлагаю вам сделать один из двух вещей:

  • избавиться от локальных переменных в этом методе, где они имеют такое же имя, как глобальные переменные или
  • аргументы Pass к вашим методам и сделать используя их возвращаемые значения.
+0

Исключение в теме "main" java.lang.NullPointerException \t at piglatin.PigLatinTest.printPigLatinWords (PigLatinTest.java:21) \t у piglatin.PigLatinTest.main (PigLatinTest.java:33) - это моя ошибка – JustAJAVAGUY

1

попробовать

внутри основной() метод

words = printLatinWords(); 

внутри вас printPigLatinWords() метод

String word = words[0]; 
char firstLetter = word.charAt(0); 
    word = word.substring(1); 
    word = words[0] + firstLetter + "ay"; 
    return word; 
+0

Я просто попробовал, но он берет вход и застрял на этом. Процесс прекращается после ввода пользователя – JustAJAVAGUY

+0

Я только заметил, что слова [] больше не являются массивом. Так что прямо используйте слово = слова –

+0

Непосредственно используйте что? – JustAJAVAGUY

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

  • Нет связанных вопросов^_^