[英]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.