Ril*_*ley 3 java string if-statement equals
我们正在进行小组作业.该计划的一部分用于输入"支付",然后输入学生的SIN(社会保险号)以及扣除其账户的金额.例如,pay,193678187,900.
将SIN与来自文件的SIN列表进行比较,生成数组并进行比较,curSin.equals(stuSin)). curSin并且stuSin都是字符串.
如果找到SIN,它将减少学生余额(未显示)的数量并将其写入文件write(student,inrec).
如果未找到SIN,则应返回"未找到SIN".
我们的问题是,即使找到了SIN,它仍然会返回"未找到SIN".我们认为它与if语句和不等于比较有关,但我们已经尝试了所有我们能想到的并且无法使其正常工作.
任何帮助将不胜感激.谢谢.
下面的代码片段.
if (cmd.equals("pay") && p.length == 3)
{ // first word is "pay";three terms (cmd, sin, $)
System.out.println("pay");
// Pay: decreases student payment, notifies of overpayment
String stuSin = p[1];
double stupay = Double.parseDouble(p[2]);
for (int i = 0; i < student.length; i++)
{
Student x1 = student[i];
String curSin = x1.getSin();
if (curSin.equals(stuSin))
{
double curpay = x1.getBal();
double newBal = curpay - stupay;
if (stupay > curpay)
{
JOptionPane.showMessageDialog(null, "Overpayment");
System.exit(0);
}
x1.setBal(newBal);
System.out.println(x1.getBal());
write(student, inrec);
}
else if (!curSin.equals(stuSin))
{
JOptionPane.showMessageDialog(null, "SIN not found"); // sin not found
System.exit(0);
}
}// end of for loop
}
Run Code Online (Sandbox Code Playgroud)
如果列表中的第一个是正确的匹配,看起来您的程序将正常工作.
但第一个不是正确的匹配.所以它退出时没有看第二个.
您可能希望迭代所有学生,并且第一次匹配突破循环.
当且仅当你迭代所有没有匹配的学生时才运行 JOptionPane.showMessageDialog(null,"SIN not found"); //sin not found