2016-09-26 6 views
0

FULL GITHUB FILES FOUND HEREJava Println работает функция не возвращает функция

Это класс Roulette.java

public static void main(String[] args) { 
    System.out.println("Welcome to roulette " + Casino.player()); 
} 

Это класс Casino.java

public static String player() { 
    Scanner sc = new Scanner(System.in); 

    String name; 
    System.out.println("Please enter your name : "); 
    name = sc.nextLine(); 

    return name; 
} 

При запуске Roulette.java это не печать Casino.player() в качестве переменной вашего имени , но запускаем функцию и запрашиваем ваше имя. Сначала я хочу запустить Casino.java, спросить ваше имя, затем запустить рулетку и приветствовать вас с вашим именем. НЕ ПРОСИТЕ ВАШЕ ИМЯ СНОВА.

Примечание: Новое в программировании

+0

Я не совсем понятно, что вы просите. Не работает ли код, как вы ожидаете? Если нет, что он делает и почему он отличается от того, что вы ожидаете? –

+0

Когда я запускаю 'Roulette.java', он запрашивает мое имя, я не хочу, чтобы это делалось так, я хочу, чтобы он спросил мое имя только в' Casino.java' и сохранил там имя и использовал его в другом классе с 'Casino.player()'. –

+0

Почему у вас есть 'main' методы в каждом из ваших файлов? Для вашего проекта должна быть единственная точка входа. –

ответ

2

The player() метода в Casino класса выводит сообщение для ввода имени пользователя. Это будет происходить каждый раз при вызове метода. Чтобы сделать то, что вы хотите сделать, вам нужно создать условное условие, которое проверяет, был ли игрок уже установлен.

ПРИМЕЧАНИЕ: Это не хорошая практика или класс, и в будущем вы должны изучить правильную практику для классов классов и полей настройки в классе. Я бы предложил опубликовать этот код на Code Review, как только вы его заработаете, чтобы получить полный ответ о том, как этот дизайн можно улучшить.

Ваш Casino класс должен выглядеть примерно так:

public class Casino { 
    private static String player = ""; 

    public static String player() { 
     if (player.equals("")) { 
      Scanner sc = new Scanner(System.in); 
      System.out.println("Please enter your name : "); 
      this.player = sc.nextLine();; 
     } 
     return player; 
    } 
} 
+0

Не должен ли 'player' быть статической переменной, поскольку он ссылается на статический метод? –

+0

Ваша переменная 'player' должна быть статической, если она используется из статического метода. Кроме этого, я бы сделал то же самое. –

+0

Хорошая точка. Я изменил его, спасибо! – yitzih

0

Попробуйте что-то вроде этого

String player = Casino.player(); 

System.out.println("Welcome to roulette " + player); 
+1

Нет, все равно делаю то же самое. –

+0

@MichaelMansour Я сделал ошибку в своем первоначальном комментарии и быстро исправил ее, возможно, вы не заметили коррекции? – zero01alpha

+0

Я использовал ваш обновленный код, и он делает то же самое, возможно, посмотрите на 2 файла Roulette.java и Casino.java в github. –

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

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