在主类中,用户输入一个用变量号保存的号码 但是当我调用第二个使用变量号的类时,它表示它是未分配的。
这两个类:
主要课程:
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);
答案 0 :(得分:0)
首先,将方法名称nintodec()
更改为convertToDec()
,以免与构造函数混淆。
public static void convertToDec() {...}
现在提问。您只需将number
声明为方法中的参数。
public static void convertToDec(String number) {...}
在主类中调用方法时,传入number
作为参数。这使convertToDec()
访问变量。
nintodec.convertToDec(number);
作为旁注,班级名称应在CamelCase
中。将班级director
更改为Director
,将班级nintodec
更改为NinToDec
。如果您需要其他帮助,请与我们联系。
答案 1 :(得分:0)
首先,您应该坚持使用常用于Java应用程序的命名约定(请参阅Code Conventions for Java Programming Language)以获取代码片段。所以类名应该是CamelCase,包名全部是小写等等......
关于您的问题,当前代码无法编译,因为方法ninetodec中的名称编号无法解析为变量。这是因为变量&#34;数字&#34;在类导演的主要方法中定义的方法在方法之外是不可见的。
致电
String number = Scanner.next();
一个新的局部变量,名称为&#34; number&#34; String类型的类型是在main方法的范围内创建的。它包含调用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);
}
}