Как вернуть входные данные из одного метода в другой без использования глобальной переменной и без повторного запроса ввода в java - PullRequest
1 голос
/ 07 марта 2020
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter A to Add Customer\nEnter V to View Customers");
    System.out.print("Enter Your Option : ");
    String option = input.next();
    getInput(option);
    Application.launch(args);
}
public void start(Stage stage) {
    stage.setTitle("Train Booking System");
    Scene window = makeButtons();
    stage.setScene(window);
    stage.show();
}
public static String getInput(String Input){
    return Input;
}
public static Scene makeButtons() {
    GridPane layout = new GridPane();
    Scene window = new Scene(layout, 1366, 768);
    for (int column = 1; column <= 10; column++) {
        Button btn = new Button();
        layout.add(btn, column, column);
        btn.setId("btn");
        Button finalBtn = btn;
        if (getInput().equals("A"))
            btn.setOnAction(e -> {
                finalBtn.setStyle("-fx-background-color: #FF3EA5FF");
            });
        }
    return window;
}

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

Как установить действие кнопок в условии if без повторного получения ввода, так как ввод снова будет запрошен

Ответы [ 4 ]

2 голосов
/ 07 марта 2020

Это то, что вы ищете?

public static void main(String[] args) {
    showInput(getInput());
}

public static int getInput(){
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    return num;
}
public static void showInput(int input){
    System.out.println(input);
}
1 голос
/ 07 марта 2020
 **Sure do this**
public class Test {
public static int getInput(){
    System.out.println("enter a number");
    return new Scanner(System.in).nextInt();
}
public static void showInput(int number){
    System.out.println(number);
}
public static void main(String[] args) {

    showInput(getInput());
}
}
1 голос
/ 07 марта 2020

Просто передайте его как параметр:

public static void main(String[] args) {
    int in=getInput();
    showInput(i);
}
public static int getInput(){
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    return num;
}
public static void showInput(int i){
    System.out.println(i);
}

Это сохранит ввод в локальную переменную, которая действительна только внутри метода main.

Также метод showInput получает значение int в качестве параметра, поэтому ему не нужно загружать его отдельно.

Или вы можете передать возвращаемое значение напрямую:

public static void main(String[] args) {
    showInput(getInput());
}

Это пропускает сохранение ввода в переменной и передает его напрямую.

Обратите внимание, что оба пути по сути одинаковы.

Также обратите внимание, что вы должны close() Scanner, когда вы не Мне это больше не нужно. Это будет важно, если вы обрабатываете потоки, отличные от System.in.

Закрытие означает, что вам больше не нужен ресурс и выдает его операционной системе.

Но если вы close() a Scanner, ресурс, на котором он построен, также будет закрыт.

Это означает, что вы не сможете использовать System.in после этого снова. Возможно, вы захотите иметь один Scanner, который создается и закрывается в методе main и передается в метод getInput().

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int in=getInput(sc);
    showInput(i);
    sc.close();
}
public static int getInput(Scanner sc){
    int num = sc.nextInt();
    return num;
}
public static void showInput(int i){
    System.out.println(i);
}

Или (даже лучше, если вы более продвинутый) с try-with-resources:

public static void main(String[] args) {
    try(Scanner sc=new Scanner(System.in)){
        int in=getInput(sc);
        showInput(i);
    }
}
public static int getInput(Scanner sc){
    int num = sc.nextInt();
    return num;
}
public static void showInput(int i){
    System.out.println(i);
}

Если вы не хотите, чтобы экземпляр Scanner создавался в методе main, вы можете создать новый метод для этого:

public static void main(String[] args) {
    try(Scanner sc=getScanner()){
        int in=getInput(sc);
        showInput(i);
    }
}
public static Scanner getScanner(){
    return new Scanner(System.in);
}
public static int getInput(Scanner sc){
    int num = sc.nextInt();
    return num;
}
public static void showInput(int i){
    System.out.println(i);
}
1 голос
/ 07 марта 2020

Как вернуть входные данные из одного метода в другой без использования глобальной переменной и без повторного запроса ввода в java

Сделайте это следующим образом:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.print("Enter an integer: ");
        int n = getInput();
        showInput(n);
    }

    public static int getInput() {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        return num;
    }

    public static void showInput(int n) {
        System.out.println("The input is " + n);
    }
}

Пробный прогон:

Enter an integer: 10
The input is 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...