захват строки из другого метода Java - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь вернуть строку "otheruser" из stati c void Answer2 в мой основной метод.

public static void main(String[] args) {
    System.out.println("is there another person with you?");

    Scanner Answer2 = new Scanner(System.in);
    String answer2 = Answer2.nextLine();
    if (answer2.equals("yes")) {
        System.out.println("ok then type there name in please");
        Answer2();
    } else if (answer2.equals("no")) {
        System.out.println("ok then good day");
    }

    System.out.println("how old are you " + Answer2());
}

static void Answer2() {
    Scanner otheruser = new Scanner(System.in);
    String Otheruser = otheruser.nextLine();
    System.out.println("hi " + Otheruser);
}

Ответы [ 2 ]

1 голос
/ 14 марта 2020

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

static String answer2() { 
    Scanner otheruser = new Scanner(System.in);
    String otherUser = otheruser.nextLine(); 
    return otherUser;
}
0 голосов
/ 14 марта 2020

В Java обычной практикой является присвоение имен методам и переменным с использованием соглашения о присвоении имен в случае верблюдов

Невозможно получить возвращаемое значение из функции static void Answer2(), поскольку тип возвращаемого значения void, что означает, что ничего не возвращается. Вам нужно изменить тип возвращаемого значения на String, чтобы получить значение.

Как упоминалось в комментариях Забузы, не следует создавать несколько сканеров в одном потоке .

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

import java.util.Scanner;

public class Main {
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("is there another person with you?");
        String answer = getString();
        if (answer.equalsIgnoreCase("yes")) {
            System.out.println("ok then type their name in please");
            String otherUser = getString();
            System.out.printf("hi %s. how old are you?%n", otherUser);
            int age = getNumber();
            System.out.printf("%s is %d years old%n", otherUser, age);
        } else {
            System.out.println("ok then good day");
        }
    }

    static String getString() {
        return scanner.nextLine();
    }

    static int getNumber() {
        return scanner.nextInt();
    }
}
...