Как использовать пользовательский ввод в java методах? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть несколько методов, которые должны включать пользовательский ввод. Я поместил сканер в метод main, но введенные пользователем значения не возвращаются и не используются в коде. Как я могу превратить пользовательский ввод в переменную, к которой могут получить доступ методы?

например:

import java.util.Scanner;
public class example {

int variableOne;
int variableTwo;
int variableResultFromUserInput;

public int variableResultFromUserInput(int variableOne, int variableTwo) {
    this.variableResultFromUserInput = variableOne * variableTwo;
    return this.variableResultFromUserInput;

}
public static void main(String[]args) {
    example myexample = new example();
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What's your variable one? ");
    variableOne = keyboard.nextInt(); //this is the variable that causes trouble

    System.out.println("Whats your variable two?");
    variableTwo = keyboard.hasNextInt(); //this is the second variable that causes trouble

    System.out.println(myexample.variableResultFromUserInput); //this is also wrong
}

}

Ответы [ 4 ]

1 голос
/ 26 февраля 2020

Итак, в вашем коде происходит много неправильных вещей, поэтому я перечислю проблемы:

  1. Вы пытаетесь использовать оба экземпляра myexample и установить переменные экземпляра variableOne и variableTwo, и передают их в качестве параметра в метод экземпляра. Это полностью избыточно и не имеет смысла, у вас уже есть доступ к ним из variableResultFromUserInput(). Получите к ним доступ с помощью this.variableOne (хотя this необязателен, но поясняет, что происходит).
  2. Вам необходимо установить variableOne и variableTwo из контекста static main используя экземпляр, AKA использует myexample.variableOne = keyboard.nextInt(), а не variableOne = keyboard.nextInt().
  3. Вы назвали переменную так же, как ваш метод экземпляра, и пытались прочитать ее вместо вызова метода. Вы должны использовать myexample.variableResultFromUserInput() с круглыми скобками и соответствующим количеством параметров соответственно. Эта переменная может быть полностью удалена, так как в настоящее время она избыточна.
  4. Вы не следуете Java соглашениям об именах для имени класса или для имен переменных. myexample должно быть myExample, а класс должен быть Example.
  5. variableTwo = keyboard.hasNextInt(); должен быть keyboard.nextInt(), а не hasNextInt(). hasNextInt только проверяет, доступно ли целое число, но фактически не читает целое, вместо этого возвращается boolean, то есть true или false.

Здесь код со всеми изменениями, сделанными ниже:

public class Example {

    int variableOne;
    int variableTwo;

    public int variableResultFromUserInput() {
        return this.variableOne * this.variableTwo;
    }

    public static void main(String[]args) {
        Example myExample = new Example();
        Scanner keyboard = new Scanner(System.in);
        System.out.println("What's your variable one? ");
        myExample.variableOne = keyboard.nextInt(); //this is the variable that causes trouble

        System.out.println("Whats your variable two?");
        myExample.variableTwo = keyboard.nextInt(); //this is the second variable that causes trouble

        System.out.println(myExample.variableResultFromUserInput()); //this is also wrong
    }
}
0 голосов
/ 26 февраля 2020

В последней строке вашего кода,

System.out.println(myexample.variableResultFromUserInput);

вы на самом деле не вызываете метод. Ваш код должен отличаться следующим образом:

System.out.println(myexample.variableResultFromUserInput(variableOne,variableTwo);

В методе "variableResultFromUserInput" вы рекурсивно вызываете метод. Хотя есть способ выполнить sh то, что вы делаете, я рекомендую вместо этого вернуть математическую операцию. Это будет выглядеть следующим образом:

public int variableResultFromUserInput(int variableOne, int variableTwo) {
return variableOne * variableTwo;}

Дайте мне знать, как это работает.

0 голосов
/ 26 февраля 2020

У вашего кода есть несколько проблем, попробуйте эту версию:

import java.util.Scanner;
public class Example {

  public int variableResultFromUserInput(int variableOne, int variableTwo) {
     return variableOne * variableTwo;
   }

   public static void main(String[]args) {
    Example myexample = new Example();
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What's your variable one? ");
    int variableOne = keyboard.nextInt();

    System.out.println("Whats your variable two?");
    int variableTwo = keyboard.nextInt();

    System.out.println(myexample.variableResultFromUserInput(variableOne, variableTwo));   }
}

Вы должны поместить это содержимое в файл с именем Example. java, скомпилировать с

javac Example.java 

и запустить с

java Example
0 голосов
/ 26 февраля 2020

Вы допустили несколько ошибок в своем коде.

  • Вы не вызывали свой метод. Вместо этого вы напечатали переменную.
  • HasNextInt используется для проверки, в строке, которую вы читаете, есть int Он возвращает только логическое значение.
  • Вы использовали вводящие в заблуждение имена методов и имена переменных.

    import java.util.Scanner;
    
    public class Main {
    private static int variableOne;
    private static int variableTwo;
    int variableResultFromUserInput;
    
    public int variableResultFromUserInput(int variableOne, int variableTwo) {
        this.variableResultFromUserInput = variableOne * variableTwo;
        return this.variableResultFromUserInput;
    
    }
    
    public static void main(String[] args) {
        Main myexample = new Main();
        Scanner keyboard = new Scanner(System.in);
        System.out.println("What's your variable one? ");
        variableOne = keyboard.nextInt();
    
        System.out.println("Whats your variable two?");
        variableTwo = keyboard.nextInt();
    
        System.out.println(myexample.variableResultFromUserInput(variableOne,variableTwo));
    
    }
    

    }

...