我希望有人可以帮助我,我需要将下面方法中的String传递给下面的方法。我已经查看了互联网,并让它在测试程序上工作,但似乎无法让它在我的工作,它已经3小时,3页的谷歌和一本书哈哈。对不起,如果这很容易,但我真的不知道。
我需要做什么......我需要将方法“WMDBAudio”中的变量“Hex”传递给方法“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);
}
}
答案 0 :(得分:1)
按照惯例,您可以命名以大写字母开头的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);
} }
答案 1 :(得分:0)
您可以将十六进制设置为类的私有属性,因此两个方法(以及同一类的所有其他方法)都可以访问。
这假设调用第一个不一定需要调用第二个。如果是这种情况,那么你可以从WMDBAudio调用hexConverter,并为hex字符串添加一个额外的参数。
编辑: 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())
答案 2 :(得分:0)
由于hexConverter是hexConverter类中的静态方法, 您可以访问该方法
hexConverter.hexConverter(hex);
您无需创建新对象即可访问该方法。该方法执行公共操作,并且不改变对象的状态。因此,您可以像上面一样使用它,传递String并获得结果。 如果它位于不同的包中,您可能还需要导入hexConverter类。