[英]how to keep an output variable when called from another class
在主類中,用戶輸入一個與變量號一起保存的數字,但是當我調用使用變量號的第二個類時,它說它是未分配的。
這里有兩個類:
主要類:
package maiN;
import java.util.Scanner;
public class director {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner keyboard = new Scanner(System.in);
System.out.println("enter a base nine number");
String number = keyboard.next();
nintodec.nintodec();
}
}
以及變量號保持未分配的被調用類:
package maiN;
public class nintodec {
public static void nintodec(){
number = new StringBuffer(number).reverse().toString();
int numero=0 ;
int mult=1;
for(int i = 0; i < number.length(); i++)
{
int digit = number.charAt(i);
digit = Character.getNumericValue(digit);
numero=numero+(mult*digit);
mult=mult*9;
}
System.out.println(numero);
首先,將方法名稱nintodec()
更改為convertToDec()
以免與構造函數混淆。
public static void convertToDec() {...}
現在回答你的問題。 您可以簡單地將number
聲明為方法中的參數。
public static void convertToDec(String number) {...}
在主類中調用方法時,傳入number
作為參數。 這使convertToDec()
可以訪問該變量。
nintodec.convertToDec(number);
作為旁注,類名應該在CamelCase
。 更改類director
到Director
,和類nintodec
到NinToDec
。 如果您需要其他幫助,請告訴我。
因此,首先您應該堅持 Java 應用程序常用的命名約定(請參閱Java 編程語言的代碼約定)以及代碼片段。 所以類名應該是駝峰式的,包名全小寫,等等......
關於您的問題,當前代碼無法編譯,因為方法 Ninetodec 中的名稱編號無法解析為變量。 這是因為在類director的main方法中定義的變量“number”在方法之外是不可見的。
打電話時
String number = Scanner.next();
在 main 方法的范圍內創建了一個名為“number”、類型為 String 的新局部變量。 它包含調用 Scanner.next() 返回的值。 只有在此行之后的同一方法塊中的代碼才能讀取此變量並與之交互。
它在這個方法之外是不可見的,例如在 nintodec 方法中,所以編譯器抱怨這個變量是未知的。 為了使其對 nintodec 方法可見,我必須將其顯式傳遞給該方法。 所以代碼的以下更改至少會編譯
import java.util.Scanner;
public class director {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("enter a base nine number");
String number = keyboard.next();
nintodec.nintodec(number);
}
}
和
public class nintodec {
public static void nintodec(String number) {
number = new StringBuffer(number).reverse().toString();
int numero = 0;
int mult = 1;
for (int i = 0; i < number.length(); i++) {
int digit = number.charAt(i);
digit = Character.getNumericValue(digit);
numero = numero + (mult * digit);
mult = mult * 9;
}
System.out.println(numero);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.