![](/img/trans.png)
[英]How do I take values read from a CSV file in java in one method and use them in another method?
[英]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.