【问题标题】:What might be a simpler way to code this?什么可能是更简单的编码方式?
【发布时间】:2017-10-08 14:12:35
【问题描述】:

我正在编写一个程序,允许学生计算每个班级的平均学生人数。目前,我的代码如下所示:

(双班是学生上的课的数量,每个班级的学生人数分配给class1,class2等)

if (classes == 1) {
    System.out.printf("How many students are there in your 1 st class?%n");
    class1 = TextIO.getlnDouble();
    classes = classes + 1;
    System.out.printf("Do you have another class?");
    boolean response = TextIO.getlnBoolean();
  } else if (classes == 2);

等等,对于所有 9 个可能的类。 (我的学校只允许在一个学期中修读相当于 6.5 门课的学分,但其中一些可能由两个学分或非学分的课程组成。)

我可以从中循环,但是如何将给定的数字分配给正确的双精度数?即如何将 class1 换成 class2、class3 等?

【问题讨论】:

  • 什么是TextIO?是否来自图书馆,如果有,来自哪个图书馆?
  • 当您认为需要编号变量时,实际上应该考虑使用数组
  • 数组,也许?

标签: java loops if-statement do-while


【解决方案1】:

是的,循环会起作用。数组是存储多个相同类型变量的更好方法

你有半个学生吗?使用整数,而不是双精度数

int[] students = new int[classes];
for (int c = 0; c < classes; c++) {
    System.out.printf("How many students are there in class #%d?%n", c);
    students[c] = TextIO.getlnInt();
} 

【讨论】:

    【解决方案2】:

    你可以这样做:

    System.out.printf("How many classes are you taking?%n");
    int classes = TextIO.getlnInt();
    for(int class=1; class <= classes; class++) {
        System.out.printf("How many students are there in your %d class?%n", class);
        students += TextIO.getlnDouble();
    }
    double average = students / classes;
    System.out.printf("There are on average %.2f students per class%n", average);
    

    这段代码应该能满足你的要求!

    【讨论】:

      猜你喜欢
      • 2013-04-06
      • 1970-01-01
      • 2017-02-20
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多