Java, передача строки из одного метода в другой - PullRequest
2 голосов
/ 28 января 2011

Я надеюсь, что кто-то может помочь мне, пожалуйста, мне нужно передать строку из метода ниже в метод ниже. Я посмотрел на 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);
    }
}

Ответы [ 3 ]

1 голос
/ 28 января 2011

По договоренности вы называете классы Java, начинающиеся с заглавных букв. Поэтому hexConverter должен быть переименован в HexConverter.

Вы обычно вызываете другой класс из класса в этом формате:

MyClass myClass = new MyClass ();

после этого вы можете использовать объект myClass для доступа к методам (не частным) MyClass.

Измените следующие 2 строки, как я прокомментировал.

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

} }

0 голосов
/ 28 января 2011

Поскольку hexConverter является статическим методом в классе hexConverter, Вы можете получить доступ к методу как

hexConverter.hexConverter(hex);

Вам не нужно создавать новый объект для доступа к методу. Метод выполняет обычную операцию и не меняет состояние объекта. Следовательно, вы можете использовать его, как указано выше, передать строку и получить результат. Вам также может понадобиться импортировать класс hexConverter, если он находится в другом пакете.

0 голосов
/ 28 января 2011

Вы можете установить hex как закрытый атрибут класса, таким образом, доступный для обоих методов (и всех других из того же класса).

Это предполагает, что вызов первого не обязательно требует вызова второго. Если это так, то вы можете просто вызвать hexConverter из WMDBAudio с дополнительным параметром для шестнадцатеричной строки.


РЕДАКТИРОВАТЬ: Nvm, которые только что видели, что это два разных класса. Ну, вы могли бы сохранить шестнадцатеричное как частную переменную для обоих классов и иметь метод GetHex () для класса WMDBAudio. Затем вы используете значение, возвращаемое этим методом, для создания класса 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...