我只搜索了一个答案,但没有找到任何答案。
谢谢你的时间。
我对使用map.message通过JMS队列发送的if
上的String
语句有一些问题
这是代码(该部分仅是来自MapMessage
的信息的创建和回顾)
信息创建
for (int i = 0; i < 5; i++) {
if (Math.random() < 0.5f) {
msg.setStringProperty("tipo", "MUL");
msg.setBoolean("operazione", true);
} else {
msg.setStringProperty("tipo", "SUM");
msg.setBoolean("operazione", false);
}
msg.setInt("operando1", (int) (Math.random() * 100));
msg.setInt("operando2", (int) (Math.random() * 100));
sender.send(msg);
}
从消息中检索数据
int op1 = 0, op2 = 0, ris = 0;
String tipo = null;
int k = 0;
boolean operazione;
public MyListener() {
// TODO Auto-generated constructor stub
}
public void onMessage(Message msg) {
java.rmi.registry.Registry r;
try {
r = LocateRegistry.getRegistry();
ICounter ic = (ICounter) r.lookup("counter");
MapMessage message = (MapMessage) msg;
tipo = "" + message.getStringProperty("tipo");
System.out.println(tipo);
op1 = message.getInt("operando1");
op2 = message.getInt("operando2");
operazione = message.getBoolean("operazione");
if (operazione) {
ris = ic.moltiplica(op1, op2);
System.out.println("moltiplico");
} else if (!operazione) {
ris = ic.somma(op1, op2);
System.out.println("sommo");
} else {
System.out.println("messaggio non valido");
}
}
}
如果我试图避免使用if
statament中的布尔变量
if(tipo.equals("MUL"))
或if(tipo.equals("SUM"))
代码总是运行else分支,即使tipo变量的打印等于SUM或MUL,任何人都知道为什么?谢谢。
我尝试使用msg.getStringProperty("tipo")
或使用==
代替equals
..ICounter是RMI界面,它可以正常运行。
答案 0 :(得分:0)
解决了使用问题
if(tipo=="SUM")
而不是if(tipo.equals("SUM"))
或Stock
id: 42324
name: 'n1'
stock_items
id: 57889359
stock_id: 42324
check_id: 14123
turn: 5
mock_id: 57889357
id: 57889360
stock_id: 42324
check_id: 14141
turn: 3
mock_id: 0
Stock
id: 42325
name: 'n1'
stock_items
id: 57889361
stock_id: 42325
check_id: 19499
turn: 5
mock_id: 57889359
id: 57889362
stock_id: 42325
check_id: 19500
turn: 3
mock_id: 0
任何人都可以告诉我为什么?感谢