繁体   English   中英

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

[英]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 更改类directorDirector ,和类nintodecNinToDec 如果您需要其他帮助,请告诉我。

因此,首先您应该坚持 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM