如何在 java 方法中利用用户输入?

How to utilize user input in java methods?

我有一些方法应该包含用户输入。我将扫描仪放在 main 方法中,但用户输入的值没有返回,也没有在代码中使用。如何将用户输入转换为可以通过方法访问的 var?

例如:

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
}

}

你的代码有几个错误。

  • 你没有调用你的 method.Instead,你打印了一个变量。
  • HasNextInt 用于检查你所在的行中是否有int 读。它只是 returns 一个布尔值。
  • 您使用了误导性的方法名称和变量名称。

    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));
    
    }
    

    }

在代码的最后一行,

System.out.println(myexample.variableResultFromUserInput);

您实际上并没有调用该方法。 您的代码应该有所不同:

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

在方法中 "variableResultFromUserInput," 您正在递归调用该方法。 虽然有一种方法可以完成您正在做的事情,但我建议改为 return 数学运算。这看起来像下面这样:

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

告诉我结果如何。

你的代码有几个问题,试试这个版本:

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

所以你的代码中有很多不正确的地方,所以我会列出问题:

  1. 您正在尝试同时使用实例 myexample 并设置 variableOnevariableTwo 的实例变量, 将它们作为实例方法的参数。这完全是多余的,没有任何用处,您已经可以从 variableResultFromUserInput() 中访问它们。使用 this.variableOne 访问它们(虽然 this 是可选的,但阐明了正在发生的事情)。
  2. 您需要使用实例从 mainstatic 上下文设置 variableOnevariableTwo,也就是使用 myexample.variableOne = keyboard.nextInt() 而不是 variableOne = keyboard.nextInt().
  3. 您将一个变量命名为与您的实例方法相同的名称,并试图读取该变量而不是调用该方法。您应该使用带括号的 myexample.variableResultFromUserInput() 和相应的正确参数数量。这个变量可以完全删除,因为它目前是多余的。
  4. 您没有遵循 class 名称或变量名称的 Java 命名约定。 myexample 应该是 myExample,class 应该是 Example
  5. variableTwo = keyboard.hasNextInt(); 应该是 keyboard.nextInt() 而不是 hasNextInt()hasNextInt 只检查是否有可用的整数,但它实际上并没有读取整数,它 returns 一个 boolean 而不是 truefalse.

这是经过以下所有更改的代码:

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
    }
}