当检查方法是否为真时,再次调用该方法?
When check if method true, the method is called again?
好的,所以在我的程序中我有两个 类、LinkPhone.java 和 Frame.java。在 LinkPhone 部分,它调用一个函数来确定它是否为真,然后如果它是做某事。但随后我调用该函数并使用 If 语句对其进行检查,它会从 If 语句中调用语句。就像在控制台中一样,它说 "DEBUG: Frame init success" 两次。为什么它会调用该函数两次,我该如何解决?
LinkPhone.java:
Frame.initFrame();
if(Frame.initFrame() == true){
return;
} else {
return;
}
Frame.java:
public static boolean initFrame(){
try {
JFrame frame = new JFrame("Link Phone");
System.out.println("DEBUG: Frame init success");
return true;
} catch (Exception e) {
System.out.println("DEBUG: Frame init failed!!!");
return false;
}
}
您需要保留第一次调用该方法时的结果:
boolean result = Frame.initFrame();
if(result) {
return;
} else {
return;
}
您正在调用您的方法两次!
Frame.initFrame();
if(Frame.initFrame() == true){
return;
} else {
return;
}
只需调用一次:
// Frame.initFrame(); // no need for this one
if(Frame.initFrame()){
// hopefully you do more in here!
// return;
} else {
// hopefully you do more in here!
// return;
}
return;
一些旁注:
- 我会避免调用 class "Frame",因为这会与作为 Java 核心 class 部分的 class 发生冲突。给它起一个更具描述性的名称,以避免将来出现问题。
- 您似乎在调用静态方法。如果有指示,这是可以的,但过度使用静态方法和变量可能会增加程序的连接性,即,它会增加代码耦合,这在较大的程序中会导致复杂性和错误风险增加。 Java 是一种 OOP 语言是有原因的,因为正确使用 OOP 技术有助于隐藏数据、减少错误和增加代码重用。
- 您的 if 和 else 代码块都有一个 return 调用。最好简化代码并从块中获取 return 调用。只需在两个块之后调用 return。
- 再次希望您的 if 和 else 块包含比仅匹配 return 语句更多的代码。
是的。每次您的程序执行 Frame.initFrame()
时,它都会调用该方法。 (这就是 ()
语法的意思)
如果你想调用它一次你可以这样做(之前没有额外的调用):
if(Frame.initFrame() == true) {
或者这个,如果你更喜欢在单独的行上调用方法:
boolean result = Frame.initFrame();
if(result == true) {
它被调用了两次,因为你写了两次Frame.initFrame()
。
Frame.initFrame(); //Once
if(Frame.initFrame() /* Twice */ == true){
return;
} else {
return;
}
如果您只想调用它一次并想存储结果,试试这个:
boolean ok = Frame.initFrame();
if(ok){ //Use result of call
//Do stuff in the event the initting went correctly
return;
} else {
//Do stuff in the event the initting failed
return;
}
或者,事件更紧凑:
if(Frame.initFrame()){ //Use result of call
//Do stuff in the event the initting went correctly
return;
} else {
//Do stuff in the event the initting failed
return;
}
好的,所以在我的程序中我有两个 类、LinkPhone.java 和 Frame.java。在 LinkPhone 部分,它调用一个函数来确定它是否为真,然后如果它是做某事。但随后我调用该函数并使用 If 语句对其进行检查,它会从 If 语句中调用语句。就像在控制台中一样,它说 "DEBUG: Frame init success" 两次。为什么它会调用该函数两次,我该如何解决?
LinkPhone.java:
Frame.initFrame();
if(Frame.initFrame() == true){
return;
} else {
return;
}
Frame.java:
public static boolean initFrame(){
try {
JFrame frame = new JFrame("Link Phone");
System.out.println("DEBUG: Frame init success");
return true;
} catch (Exception e) {
System.out.println("DEBUG: Frame init failed!!!");
return false;
}
}
您需要保留第一次调用该方法时的结果:
boolean result = Frame.initFrame();
if(result) {
return;
} else {
return;
}
您正在调用您的方法两次!
Frame.initFrame();
if(Frame.initFrame() == true){
return;
} else {
return;
}
只需调用一次:
// Frame.initFrame(); // no need for this one
if(Frame.initFrame()){
// hopefully you do more in here!
// return;
} else {
// hopefully you do more in here!
// return;
}
return;
一些旁注:
- 我会避免调用 class "Frame",因为这会与作为 Java 核心 class 部分的 class 发生冲突。给它起一个更具描述性的名称,以避免将来出现问题。
- 您似乎在调用静态方法。如果有指示,这是可以的,但过度使用静态方法和变量可能会增加程序的连接性,即,它会增加代码耦合,这在较大的程序中会导致复杂性和错误风险增加。 Java 是一种 OOP 语言是有原因的,因为正确使用 OOP 技术有助于隐藏数据、减少错误和增加代码重用。
- 您的 if 和 else 代码块都有一个 return 调用。最好简化代码并从块中获取 return 调用。只需在两个块之后调用 return。
- 再次希望您的 if 和 else 块包含比仅匹配 return 语句更多的代码。
是的。每次您的程序执行 Frame.initFrame()
时,它都会调用该方法。 (这就是 ()
语法的意思)
如果你想调用它一次你可以这样做(之前没有额外的调用):
if(Frame.initFrame() == true) {
或者这个,如果你更喜欢在单独的行上调用方法:
boolean result = Frame.initFrame();
if(result == true) {
它被调用了两次,因为你写了两次Frame.initFrame()
。
Frame.initFrame(); //Once
if(Frame.initFrame() /* Twice */ == true){
return;
} else {
return;
}
如果您只想调用它一次并想存储结果,试试这个:
boolean ok = Frame.initFrame();
if(ok){ //Use result of call
//Do stuff in the event the initting went correctly
return;
} else {
//Do stuff in the event the initting failed
return;
}
或者,事件更紧凑:
if(Frame.initFrame()){ //Use result of call
//Do stuff in the event the initting went correctly
return;
} else {
//Do stuff in the event the initting failed
return;
}