我有一个equals方法来比较一些属性,这就是它的样子:
public boolean Complementos(COSTOS obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
COSTOS other = (COSTOS) obj;
if (NumeroParte == null) {
if (other.NumeroParte != null)
return false;
} else if (!NumeroParte.equals(other.NumeroParte))
return false;
if (descripcion == null) {
if (other.descripcion != null)
return false;
} else if (!descripcion.equals(other.descripcion))
return false;
if (Double.doubleToLongBits(monto) != Double.doubleToLongBits(other.monto))
return false;
if (referencia != other.referencia)
return false;
return true;
}
但是除了查看属性是否相等外,我还想从属性“ -1、0、1”返回“ compareToIgnoreCase”中的值,并且由于布尔方法,我不允许这样做并且我尝试将其设置为“ int”,但是这只会将我的“ return false / true”标记为错误,因此...我可以使用异常吗?如果可以的话...该如何实施?
谢谢
答案 0 :(得分:0)
您可以使用异常来传达此信息,但您绝对不应该这样做。例外是在特殊情况下使用的,不应将其用于控制应用程序的流程。
通常来说,如果您有一个方法需要返回多个输出,则应将其拆分为多个方法。这样可以使您的代码更具可重用性,并且使API的混乱程度降低。
在极少数情况下您无法执行此操作,则可以返回一个表示方法结果的对象。例如:
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
super().__init__()
self.canvas=tk.Canvas(self, width=800, height=600)
self.canvas.create_text(400, 200, text='Starlight', font='Arial 20 bold')
self.canvas.create_text(400, 325, text='Press a button to start the game', font='Arial 20')
self.canvas.pack()
self.a=400
self.b=500
self.canvas.bind('<Button-1>', self.start)
self.canvas.bind('<Button-3>', self.start)
self.canvas.bind_all('<Left>', self.move_any)
self.canvas.bind_all('<Right>', self.move_any)
self.canvas.bind_all('<Up>', self.move_any)
self.canvas.bind_all('<Down>', self.move_any)
def start(self, coordinates):
self.canvas.delete("all")
self.canvas.create_rectangle(self.a - 20, self.b, self.a + 20, self.b - 50)
def move_any(self, event):
self.canvas.delete("all")
x = event.keysym
if x == "Left":
self.a -= 100
if x == "Right":
self.a += 100
if x == "Up":
self.b -= 100
if x == "Down":
self.b += 100
self.canvas.create_rectangle(self.a - 20, self.b, self.a + 20, self.b - 50)
if __name__ == "__main__":
Example().mainloop()