循环使用不同的变量?

时间:2014-02-05 18:04:22

标签: java variables loops for-loop

在此之前,用户为numOfTimes输入一个int。说它是5.这将问5次问题。但每次通过它都会删除hrs1中的先前值。它需要是一个单独的变量。所以如果numOfTimes = 5那么我应该为“小时”获得5个不同的双打,为“分钟”获得5个不同的双打。 (假设用户输入不同的时间)但是它们都需要存储在不同的变量中。我该怎么做?

谢谢你我的问题已经回答了!

4 个答案:

答案 0 :(得分:2)

使用数组..

int a[] = new int[5];
for(int i =0;i<5;i++){
    a[i] = //your value
}

答案 1 :(得分:1)

您只需将“计算平均值”代码放在for循环之外。我不确定你想要如何计算平均值。但这有两个简单的方法。

方法一 - 跟踪总数并计算基本平均值。

public class AvgTime {

  public static void main(String[] args) {

    Scanner in = new Scanner(System.in);


    System.out.print("How many times? ");
    int numOfTimes = in.nextInt();
    System.out.println("\n");

    double hrTotal = 0;
    double minTotal = 0;

    for (int i = 1; i <= numOfTimes; i++){

      System.out.println("What Time (military time):  ");
      System.out.print("Hour  ");
      double hrs1 = in.nextDouble();
      System.out.print("Minute  ");
      double min1 = in.nextDouble();

      hrTotal += hrs1;
      minTotal += min1;
    }

    //calculate average
    double avdHr1 = hrTotal/numOfTimes;
    double timeMin1 = minTotal/numOfTimes;

    System.out.println(avgHr1+":"+timeMin1 + " P.M");
  }
}

方法2 - 使用列表并迭代两次

public class AvgTime {

  public static void main(String[] args) {

    Scanner in = new Scanner(System.in);


    System.out.print("How many times? ");
    int numOfTimes = in.nextInt();
    System.out.println("\n");

    ArrayList<Double> hours = new ArrayList<>();
    ArrayList<Double> minutes = new ArrayList<>();
    double minTotal = 0;

    for (int i = 1; i <= numOfTimes; i++){

      System.out.println("What Time (military time):  ");
      System.out.print("Hour  ");
      double hrs1 = in.nextDouble();
      System.out.print("Minute  ");
      double min1 = in.nextDouble();

      hours.add(hrs1);
      minutes.add(min1);
    }

    //calculate average
    double avgHr1 = 0;
    double timeMin1 = 0:
    for (int i = 0; i < hours.size(); i++) {
      double hour = hours.get(i);
      double minute = minutes.get(i);

      //ToDo: calculate average so far

    }

    System.out.println(avgHr1+":"+timeMin1 + " P.M");
  }

答案 2 :(得分:0)

您可以使用数组存储用户输入的信息。在循环之前,使用new关键字创建一个数组,例如double[] hrs=new double[numOfTimes]。在循环中,为每个输入hrs[i]=in.nextDouble()写入数组中的不同位置。您可以稍后使用语法'name [index]'从数组中的位置读取,例如'hrs [2]'。请注意,对于java和许多其他语言,数组从0开始。这意味着对于名为arr的数组[1,2,3],arr[1]等于2而不是1.这意味着如果你的for循环最好已从for(int i=1;i<=numofTimes;i++)更改为'for(int i = 0; i

答案 3 :(得分:0)

<SOAPBOX,RANT,HIGHHORSE>

这更像是一个代码审查,而不是直接的答案,但有些事情一直困扰着我在stackoverrflow上观察到的新手问题。

开发时,我避免像瘟疫那样的键盘输入。这是一种苦差事,特别是在这个程序中有一个循环。这么多新手问题都有用户键盘输入。为什么?!它使开发变得更加困难!

我重写了你的程序以增加测试数据的能力,完全避免了在开发过程中用户输入的需要。测试结束后,只需切换测试/实时评论。

我确信这是一种更优雅的方式,但这种风格对我来说效果很好,我推荐它。

</SOAPBOX,RANT,HIGHHORSE>

import java.util.*;
import static java.lang.Math.abs;

public class AverageTimeWTestingData  {

   public static void main(String[] args) {

      HourMin24[] ahm = null;

      //EXACTLY ONE of the following lines must be commented out
      //Test only:
         ahm = getTestData();
      //Live only:
      // ahm = getDataFromUserInput();

      double dTotalHours = 0.0;
      for (HourMin24 hm : ahm){
         System.out.println("Time: " + hm.iHour + ":" + hm.iMin);
         dTotalHours += hm.iHour + (hm.iMin / 60);
      }

      System.out.println("Average time (" + ahm.length + "): " + (dTotalHours / ahm.length));
   }
   private static final HourMin24[] getDataFromUserInput()  {
      Scanner in = new Scanner(System.in);

      System.out.print("How many times? ");
      int numOfTimes = in.nextInt();
      ArrayList<HourMin24> al24 = new ArrayList<HourMin24>(numOfTimes);
      while(numOfTimes < 0)  {
         System.out.println("What Time (military time):  ");
         System.out.print("Hour  ");
         int iHour = in.nextInt();
         System.out.print("Minute  ");
         int iMin = in.nextInt();

         al24.add(new HourMin24(iHour, iMin));

         numOfTimes--;
      }

      return  al24.toArray(new HourMin24[al24.size()]);
   }
   private static final HourMin24[] getTestData()  {
      System.out.println("TEST MODE ON");
      return  new HourMin24[] {
         new HourMin24(13, 1),
         new HourMin24(23, 19),
         new HourMin24(0, 59),
         new HourMin24(16, 16),
      };
   }
}
class HourMin24  {
   public int iHour;
   public int iMin;
   public HourMin24(int i_hour, int i_min)  {
      iHour = i_hour;
      iMin = i_min;
   }
}

输出:

[C:\java_code\]java AverageTimeWTestingData
TEST MODE ON
Time: 13:1
Time: 23:19
Time: 0:59
Time: 16:16
Average time (4): 13.0