从另一个类调用时如何保持输出变量

时间:2015-07-28 20:33:54

标签: java

在主类中,用户输入一个用变量号保存的号码 但是当我调用第二个使用变量号的类时,它表示它是未分配的。

这两个类:

主要课程:

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);

2 个答案:

答案 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);
    }
}