3

这是我的 Java 课程中的一个作业,我们必须使用方法来解决问题。我已经完成了大部分工作,但我遇到了麻烦。

任务:

图表有助于显示数据。创建一个类似于下图的表。生成的数字将被创建为 10,000 美元到 40,000 美元之间的随机数字。数字和图表显示了 10 月份批发商的销售额。请注意,它们每周 7 天不开放。(星期日是他们关闭的那一天,而在相关年份的 10 月 1 日、8 日、15 日、22 日和 29 日是星期日。生成该图表的原因是,每颗星代表 1,000 美元的销售额。

您的图表看起来不会完全像这样,因为每个程序中生成的随机数都不同。如图所示(右对齐)打印列中的日期。此外,星期一的销售额总是超过 30,000 美元,星期二的销售额总是超过 20,000 美元。星期六的销售额总是低于 15,000 美元。

样本输出:

Day Daily   Sales Graph
2   37081   *************************************
3   28355   ****************************
4   39158   ***************************************
5   24904   ************************
6   28879   ****************************
7   13348   *************

9   38791   **************************************
10  32564   ********************************
11  23867   ***********************
12  18154   ******************
13  25830   ***********************
14  14092   **************

16  36861   ************************************
17  26207   ************************
18  10921   **********
19  16573   ****************
20  33423   *********************************
21  12766   ************

23  33770   *********************************
24  28823   **************************
25  38883   **************************************
26  20959   ******************
27  16262   ****************
28  13269   *************

30  33557   *********************************
31  22579   **********************

我这里有大部分:

import java.util.*;
public class Prog310t
{
    public static Integer randomNumbers (int minNumber, int maxNumber)
    {
        Random gen = new Random();
        return (gen.nextInt(maxNumber - minNumber + 1) + minNumber);
    }

    public static String starLine (int numberOfAsterisks)
    {
        String stars = "";
        for (int i = 0; i < numberOfAsterisks; i++)
            stars = stars + "*";
        return stars;
    }

    public static void main (String args [])
    {
        int randomNumber;
        System.out.println("Day\tDaily\tSales Graph");
        for (int x = 2; x <= 31; x++)
        {
            if (x == 8 || x == 15 || x == 22 || x == 29)
            {
                System.out.println();
            }
            if (x == 2 || x == 9 || x == 16 || x == 23 || x == 30)
            {
                randomNumber = randomNumbers(30000, 40000);
                System.out.println(x + "\t" + randomNumber + "\t" + starLine(randomNumber / 1000));
            }
            if (x == 3 || x == 10 || x == 17 || x == 24 || x == 31)
            {
                randomNumber = randomNumbers(20000, 40000);
                System.out.println(x + "\t" + randomNumber + "\t" + starLine(randomNumber / 1000));
            }
            if (x == 7 || x == 14 || x == 21 || x == 28)
            {
                randomNumber = randomNumbers(10000, 15000);
                System.out.println(x + "\t" + randomNumber + "\t" + starLine(randomNumber / 1000));
            }
        }
    }
}

其他日子我将如何让它输出?它只输出星期日(空白)、星期一、星期二和星期六。如何让它在其他日子输出而不必输入每一天的数字?

4

1 回答 1

2

使用 for 循环,只允许 31 天,嵌套在 for 循环中数周。检查特殊天数并根据天数生成随机数。

import java.util.*;
public class Prog310t
{
    public static Integer randomNumbers (int minNumber, int maxNumber)
    {
        Random gen = new Random();
        return (gen.nextInt(maxNumber - minNumber + 1) + minNumber);
    }

    public static String starLine (int numberOfAsterisks)
    {
        String stars = "";
        for (int i = 0; i < numberOfAsterisks; i++)
            stars = stars + "*";
        return stars;
    }

    public static void main (String args [])
    {
        int days = 1;
        for(int week = 0; week < 5; week++){
            for(int day = 1; day < 8 && days < 32; day++){
                int randomNumber = 0;
                    if(day==1){
                        randomNumber = 0;
                    }else if(day == 2){
                        randomNumber = randomNumbers(30000, 40000);
                    }else if(day==3){
                        randomNumber = randomNumbers(20000, 40000);
                    }else if(day==7){
                        randomNumber = randomNumbers(10000, 15000);
                    }else{
                        randomNumber = randomNumbers(10000, 40000);
                    }
                System.out.println(days + "\t" + randomNumber + "\t" + starLine(randomNumber / 1000));
                days++;
            }
        }
    }
}
于 2013-01-06T22:10:24.363 回答