0

我正在高中comp sci课上做作业,我遇到了这个问题。总数不加。有人能告诉我为什么吗?

import javax.swing.*;

public class TimeSheets {

  public static void main(String[] args) {

    String loc;
    String[] day = new String[7];       
    String time1;
    String time2;
    int location;
    double total = 0;
    int num = 1;
    int x = 0;
    int y = 0;
    double clock1 = 0;
    double clock2 = 0;
    double hour;

    loc = JOptionPane.showInputDialog(null, "Enter your Work Location");
    location = Integer.parseInt(loc);

    while (x < 7 && y < 7) {

      day[x] = JOptionPane.showInputDialog(null, "Enter Day "+num+" 's Starting code");
      day[y] = JOptionPane.showInputDialog(null, "Enter Day "+num+" 's Ending code");
      time1 = day[x];
      time2 = day[y];

      if (time1 == "1") {
        clock1 = 9;
      }
      if (time1 == "2") {
        clock1 = 9.5;
      }
      if (time1 == "3") {
        clock1 = 10;
      }
      if (time1 == "4") {
        clock1 = 10.5;
      }
      if (time1 == "5") {
        clock1 = 11;
      }
      if (time1 == "6") {
        clock1 = 11.5;
      }
      if (time1 == "7") {
        clock1 = 12;
      }
      if (time1 == "8") {
        clock1 = 12.5;
      }
      if (time1 == "9") {
        clock1 = 13;
      }
      if (time1 == "A") {
        clock1 = 13.5;
      }
      if (time1 == "B") {
        clock1 = 14;
      }
      if (time1 == "C") {
        clock1 = 14.5;
      }
      if (time1 == "D") {
        clock1 = 15;
      }
      if (time1 == "E") {
        clock1 = 15.5;
      }
      if (time1 == "F") {
        clock1 = 16;
      }
      if (time1 == "G") {
        clock1 = 16.5;
      }
      if (time1 == "H") {
        clock1 = 17;
      }

      if (time2 == "1") {
        clock2 = 9;
      }
      if (time2 == "2") {
        clock2 = 9.5;
      }
      if (time2 == "3") {
        clock2 = 10;
      }
      if (time2 == "4") {
        clock2 = 10.5;
      }
      if (time2 == "5") {
        clock2 = 11;
      }
      if (time2 == "6") {
        clock2 = 11.5;
      }
      if (time2 == "7") {
        clock2 = 12;
      }
      if (time2 == "8") {
        clock2 = 12.5;
      }
      if (time2 == "9") {
        clock2 = 13;
      }
      if (time2 == "A") {
        clock2 = 13.5;
      }
      if (time2 == "B") {
        clock2 = 14;
      }
      if (time2 == "C") {
        clock2 = 14.5;
      }
      if (time2 == "D") {
        clock2 = 15;
      }
      if (time2 == "E") {
        clock2 = 15.5;
      }
      if (time2 == "F") {
        clock2 = 16;
      }
      if (time2 == "G") {
        clock2 = 16.5;
      }
      if (time2 == "H") {
        clock2 = 17;
      }

      hour = clock2 - clock1;
      total = hour + hour;

      JOptionPane.showMessageDialog(null, "total hour" + total);
      x++;
      y++;
      num++;

    }
  }
}
4

3 回答 3

4

使用 equals() 方法检查字符串是否相等。==运算符检查两个引用变量是否引用同一个字符串对象。equals()方法检查两个字符串是否有意义地相等。

    if (time1 == "1") {

应该是

    if (time1.equals("1")) {

还有你所有的其他if'陈述。我强烈建议您使用嵌套的 if else 而不是一百万个 if 语句。例如:

if (time1.equals("1")) {
        clock1 = 9;
      }
      else if (time1.equals("2")) {
        clock1 = 9.5;
      }
    ..........
于 2012-12-03T14:36:54.557 回答
1

将此方法用于使用 ENUM 的静态地图

public enum TimeToClock{
    1(9),
    2(9.5);
    //so on

    public final double value;

    private static final Map<Integer,TimeToClock> map;
    public static final TimeToClock[] VALUES = values();
    static {
        map = new HashMap<Integer,TimeToClock>(3);
        for (TimeToClock type : VALUES) {
            map.put(type.value, type);
        }
    }   

    TimeToClock(int value){
        this.value = value;
    }   
    public double getValue(){
        return this.value;
    }

    public static TimeToClock get(int key){
        return map.get(key);
    }
}

利用:

double value = TimeToClock.get(2).getValue();
于 2012-12-03T14:58:44.643 回答
0

你最后的总数看起来计算不正确。

total = hour + hour;

是不是更有意义...

total = total + hour;

所以你是在增加总数而不是在每次循环迭代后重置它?

于 2012-12-03T14:56:12.570 回答