2017-01-03 3 views
0

Одна вещь, с которой я ужасно борюсь на любом языке программирования, - это концепция получения значения переменной от метода к другому методу. Пример ниже:Получение значения переменной от 1 метода к другому в java

import java.util.Scanner; 

public class CreateGuest { 

    public static String guestname(){ 



     Scanner userinput= new Scanner(System.in); 
     System.out.println("Enter name: "); 
     String name = userinput.next(); 

     return name; 
    } 

    public void printName(){ 



     System.out.println("You entered " + ?? How do I get the value of name here??); 
    } 

} 

Одна вещь, которую я мог бы сделать, это иметь имя guest() в имени печати().

public void printName(){ 



     System.out.println("You entered " + guestname()); 
    } 

Если я сделаю это, то в главном меня будут дважды вводить запрос пользователя. Я хочу сделать это, не удаляя 1-й метод.

cg.guestname(); cg.printName();

Разработчик в моей компании рекомендовал объявить имя как переменную класса. Но разве это не плохая практика?

Благодаря

+0

Как вы узнали Java? «Это» никогда не рассказывал вам об основах этого языка? – Tom

+0

Сохраните переменную global.If область видимости является локальной, ее невозможно получить из других методов или других областей вне этой локальной области –

ответ

2

Просто передать его в качестве аргумента printName(). НАПРИМЕР,

public static void main(String[] args) { 
    String name = guestname(); 
    printName(name); 
} 

public static void printName(String name) { 
    System.out.println("You entered " + name); 
} 

printName() также должен быть static, если у вас есть экземпляр CreateGuest.

0

Вам не нужно использовать переменную класса, но это тоже замечательно. Вы можете просто инкапсулировать поле прямо в основной:

public static String askUserForName() { 
    Scanner userInput = new Scanner(System.in); 
    System.out.println("Enter name: "); 

    return userInput.next(); 
} 

public static void main(String[] args) { 
    final String guestName = askUserForName(); 
    System.out.println("You entered " + guestName); 
} 
0

Просто держать переменную глобальной в области видимости класса импорта java.util.Scanner;

public class CreateGuest { 
    private static String name=""; 
    public static String guestname(){ 



     Scanner userinput= new Scanner(System.in); 
     System.out.println("Enter name: "); 
     name = userinput.next(); 

     return name; 
    } 

    public void printName(){ 



     System.out.println("You entered " + name); 
    } 

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