2012-04-11 28 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

相關問題