总计不加起来

时间:2012-12-03 14:35:57

标签: java string if-statement while-loop

我正在从事高中综合课程的课堂作业 我遇到过这个问题。 总数没有增加。 谁能告诉我为什么?

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++;

    }
  }
}

3 个答案:

答案 0 :(得分:4)

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

    if (time1 == "1") {

sholud be

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

以及所有其他if个语句。我强烈建议你使用嵌套的if if而不是一百万if语句。喜欢:

if (time1.equals("1")) {
        clock1 = 9;
      }
      else if (time1.equals("2")) {
        clock1 = 9.5;
      }
    ..........

答案 1 :(得分: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();

答案 2 :(得分:0)

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

total = hour + hour;

是不是更有意义...

total = total + hour;

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