簡體   English   中英

Java,將字符串從一種方法傳遞到另一種方法

[英]Java, Passing a String from one method to another

我希望有人可以幫助我,我需要將String從下面的方法傳遞給下面的方法。 我看過Interent並使其在測試程序上工作,但似乎無法使其在我的程序上工作,這已經3個小時了,有3頁的google和一本書,哈哈。 抱歉,這很簡單,但我真的不知道。

我需要做的...我需要將變量“ Hex”從方法“ WMDBAudio”傳遞到方法“ hexConverter”。 我希望這是有道理的,謝謝您的幫助,感謝!

public class WMDBAudio{
public String WMDBAudio1(String fileInfo) throws IOException{

//code removed as there is quite a lot

int m = 0;
                    while (m != 1){
                        for (int count = 0; count < 3; count++){

                            hexIn = in.read();
                            s = Integer.toHexString(hexIn);
                            if(s.length() < 2){
                                s = "0" + Integer.toHexString(hexIn);
                            }
                            temp = temp + s;
                        }
                        if ("000000".equalsIgnoreCase(temp)){
                            m = 1;
                            hex = entry;
                        }
                        entry = entry + temp;
                        temp = "";
                    }

}
}

//十六進制轉換器方法

public class hexConverter{

    public static void hexConverter(String t){

        WMDBAudio w = new WMDBAudio();

        String hex = "";

        StringBuilder output = new StringBuilder();
        for (int i = 0; i < hex.length(); i+=2){
            String str = hex.substring(i, i+2);
            output.append((char)Integer.parseInt(str, 16));
        }
        System.out.println(output);
    }
}

按照約定,您可以使用大寫字母命名Java類。 因此hexConverter應該重命名為HexConverter。

通常,您可以使用以下格式從類中調用另一個類:

MyClass myClass =新的MyClass();

之后,您可以使用myClass對象訪問MyClass的方法(非私有)。

根據我的評論,更改以下兩行。

public class WMDBAudio{
    public String WMDBAudio1(String fileInfo) throws IOException{

//code removed as there is quite a lot

int m = 0;
                while (m != 1){
                    for (int count = 0; count < 3; count++){

                        hexIn = in.read();
                        s = Integer.toHexString(hexIn);
                        if(s.length() < 2){
                            s = "0" + Integer.toHexString(hexIn);
                        }
                        temp = temp + s;
                    }
                    if ("000000".equalsIgnoreCase(temp)){
                        m = 1;
                        hex = entry;
                    }
                    entry = entry + temp;
                    temp = "";
                }
                //add these 2 lines
                hexConverter hexConv = new hexConverter();
                hexconv.hexConverter(hex); 

}}

您可以將hex設置為該類的私有屬性,從而使這兩種方法(以及同一類的所有其他方法)都可以使用。

這假設調用第一個並不一定需要調用第二個。 如果是這種情況,那么您可以從WMDBAudio調用hexConverter,並為hex String提供一個額外的參數。


編輯: Nvm剛剛看到它們是兩個不同的類。 好了,您可以將十六進制保存為兩個類的私有變量,並在WMDBAudio類上具有GetHex()方法。 然后,您可以使用該方法返回的值來創建一個hexConverter類,該類將Hex作為其構造函數的參數,從而允許進行以下操作:

WMDBAudio audio = new WMDBAudio()
...
hexConverter hexconv = new hexConverter(audio.GetHex())

或者只是向hexConverter函數提供一個附加參數,使您可以編寫如下內容:

WMDBAudio audio = new WMDBAudio()
...
hexConverter hexconv = new hexConverter()
hexconv.hexConverter(audio.GetHex())

由於hexConverter是hexConverter類中的靜態方法,因此您可以按以下方式訪問該方法

hexConverter.hexConverter(hex);

您無需創建新對象即可訪問該方法。 該方法執行通用操作,並且不更改對象的狀態。 因此,您可以像上面一樣使用它,傳遞String並獲得結果。 如果hexConverter類位於其他軟件包中,則可能還需要導入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM