簡體   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