2012-04-11 40 views
3

我们正在进行小组作业。该计划的一部分用于输入“支付”,然后是学生的SIN(社会保险号码),以及按多少扣除其帐户。例如,pay,193678187,900如何使用!.equals和字符串?

将SIN与来自文件的SIN列表进行比较,生成一个数组并进行比较,curSin.equals(stuSin))curSinstuSin都是字符串。

如果找到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 
    } 
+2

调试!在if之前加上'System.out.println(cmd)'。另外'p.length == 3'是多余的。 – 2012-04-11 20:00:44

+3

为什么在你的陈述中你有一个条件?你在第一个if(if(curSin.equals(stuSin)))中检查相同的条件。 – 2012-04-11 20:00:46

+0

@TomaszNurkiewicz我不认为p.length是多余的。由于这只是一个代码片段,所以不可能告诉,但我猜想这是需要的。 – emory 2012-04-11 20:08:09

回答

3

似乎没有要什么不对您的使用equals方法。

你应该添加一些调试语句(或实际使用调试器),以确保你真的比较了你想要的字符串。

System.out.println("stuSin: '" + stuSin + "'"); 
System.out.println("curSin: '" + curSin + "'"); 
+0

没想到!修正了这个问题,我们只需要在第一次找到SIN后退出for循环。 – Riley 2012-04-11 20:21:08

5

它看起来像你的程序会正常工作,如果列表中的第一个是正确的匹配。

但是第一个不是正确的匹配。所以它没有看过第二个就退出了。

您可能想要迭代所有学生,并在第一次匹配时跳出 。

当且仅当您遍历所有的学生都没有匹配运行JOptionPane.showMessageDialog(null,"SIN not found"); //sin not found

+0

再看一遍,我们也看到了这个问题。但是,我们不知道如何解决它。 – Riley 2012-04-11 20:56:31

相关问题