簡體   English   中英

在Java中,如何從一個方法獲取從用戶輸入獲得的變量並在另一個方法中使用輸出?

[英]In Java, how can I take a variable obtained from a user input from one method and use the output in another method?

我無法弄清楚如何將變量從一個方法帶到另一個方法中使用,尤其是來自用戶輸入的方法。 例如,此測試程序不起作用。 我怎么能讓它起作用?


import java.util.*;

public class Test {
    public static void main(String[] args) {
    input();
    output();   
   }

    public static void input() {

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        int number7 = number * 7;
        System.out.print("The result is: " + number7);

    }
    public static void output() {

        Scanner console = new Scanner(System.in);

        System.out.print("The result multiplied by two: ");
        int number = console.nextInt();

        int number2 = number7 * 2;
        System.out.print("The result is: " + number2);
    }
}

有(至少)兩種方式。 一種是定義input()方法以返回output()方法中所需的值:

import java.util.*;

public class Test {
    public static void main(String[] args) {
    int in = input();
    output(in);   
   }

    public static int input() {

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        int number7 = number * 7;
        System.out.print("The result is: " + number7);
        return number7;
    }

    public static void output(int number7) {

        Scanner console = new Scanner(System.in);

        System.out.print("The result multiplied by two: ");
        int number = console.nextInt();

        int number2 = number7 * 2;
        System.out.print("The result is: " + number2);
    }
}

另一種是聲明一個類變量:

import java.util.*;

public class Test {
    static int number7;
    public static void main(String[] args) {
    input();
    output();   
   }

    public static void input() {

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        int number7 = number * 7;
        System.out.print("The result is: " + number7);
    }

    public static void output() {

        Scanner console = new Scanner(System.in);

        System.out.print("The result multiplied by two: ");
        int number = console.nextInt();

        int number2 = number7 * 2;
        System.out.print("The result is: " + number2);
    }
}

您可以將變量作為參數傳遞給另一個方法。

一個基本的例子: -

private void method1() {
        int i = 10;
        method2(i);
    }

    private void method2(int i) {

    }

例如,如果你想在output方法中傳遞console ,那么你應該做這樣的事情:

public class Test {

    public static void main(String[] args) {
    int number7;
    Scanner console = input();
    output(console);   
   }

    public static Scanner input() {

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        number7 = number * 7;
        System.out.print("The result is: " + number7);
        return console;

    }
    public static void output(Scanner console) {

        System.out.print("The result multiplied by two: ");
        int number = console.nextInt();

        int number2 = number7 * 2;
        System.out.print("The result is: " + number2);
    }
}

具有類似輸入的名稱的函數不應返回void。 並且具有類似輸出的名稱的函數應該將要輸出的材料作為參數(或計算輸出)。

import java.util.*;

public class Test {
    public static void main(String[] args) {
    final int myInput = input();
    output(myInput);   
   }

    public static int input() { // not void

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        int number7 = number * 7;
        System.out.print("The result is: " + number7);
        return number7;

    }
    public static void output(int input) {

      //  Scanner console = new Scanner(System.in); 
     // NO, you don't want to be getting INPUT now! You are making output!

        System.out.print("The result multiplied by two: ");
     //   int number = console.nextInt();

        int number2 = input * 2; // not number7, it lives only in the input routine
        System.out.print("The result is: " + number2);
    }
}

你應該回去看看方法的概念。

需要指出的另一個錯誤是,您永遠不會關閉掃描儀,只有能夠幫助您避免編譯失敗的是您的JVM才能解決這個錯誤。 試想一下,如果任何開發人員都有一個舊的JVM,它就沒有這種直觀的功能來糾正你的錯誤。

    import java.util.*;
    public class Test {
        public static void main(String[] args) {
        input();
        output();   
    }

    public static void input() {

        Scanner console = new Scanner(System.in);

        System.out.print("This number multiplied by 7: ");
        int number = console.nextInt();

        int number7 = number * 7;
        System.out.print("The result is: " + number7);
        console.close(); // This is important!!!

    }
    public static void output() {

        Scanner console = new Scanner(System.in);

        System.out.print("The result multiplied by two: ");
        int number = console.nextInt();

        int number2 = number7 * 2;
        System.out.print("The result is: " + number2);
        console.close(); // This is important!!!
    }
}

Java方法在括號中有返回類型和參數列表,因此在您的情況下,而不是返回void返回一些數據類型以在其他方法中使用。

您的輸入和輸出方法沒有按照他們的名字建議。 它們都是讀取輸入,計算結果和打印輸出。

這是不同的設計,展示了如何分離關注點和傳遞值:

import java.util.Scanner;

public class MultiplyBySevenMachine {

public static void main(String[] args) {

    MultiplyBySevenMachine multiplyBySevenMachine = new MultiplyBySevenMachine();
    multiplyBySevenMachine.run();
}

private void run() {
    while (true) {
        int input = readInput();
        int result = calculateResult(input);
        writeOutput(result);
    }
}

private int readInput() {
    Scanner console = new Scanner(System.in);
    System.out.print("Please type a number: ");
    int number = console.nextInt();
    return number;
}

private int calculateResult(int input) {
    int result = input * 7;
    return result;
}

private void writeOutput(int result) {
    System.out.println("The result is: " + result);
}
}

您需要在方法類變量中使用變量。 你可以通過在它前面放置靜態來做到這一點。 靜態意味着任何類或方法都可以使用它。 如果您忘記使用靜態,您將獲得所謂的局部變量,其中只能通過創建它的方法訪問。此外,在該程序中,您創建了兩個掃描變量。 你可以剛制作一個並在其前面放置靜電。 我希望這個問題的答案有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM