【发布时间】:2013-11-21 13:29:37
【问题描述】:
我需要将最小值和最大值存储在给定的数组中,然后用特定字符将它们打印出来(+ 表示最大值,“-”表示最小值,“*”表示所有其他字符)。
我想我已经完成了大部分工作,除了适当地存储值,因此所有值都不是“++++++++++....”,就像它们当前打印出来的那样。
有什么想法吗?非常感谢您的帮助。
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int numbers[] = new int[24];
int min = Integer.MAX_VALUE;
int max=Integer.MIN_VALUE;
int maxhour = 0;
int minhour = 0;
int total = 0;
char MAX = '+', MIN = '-', MIDDLE = '*';
char currentchar = 0;
for(int i=0; i< numbers.length; i++){
numbers[i] = keyboard.nextInt();
total = total + numbers[i];
if(numbers[i]<min){
min = numbers[i];
minhour = i;
currentchar = MIN;
}else if (numbers[i]>max){
max = numbers[i];
maxhour = i;
currentchar = MAX;
}
}
for(int i=0; i< numbers.length; i++){
System.out.print("Hour " + i + ":");
printTimes(currentchar, numbers[i]);
System.out.println("");
}
System.out.println("Largest Number of hits is : " + max + " at hour " + maxhour);
System.out.println("Average Number of hits is : " + (total/24) + " per hour");
System.out.println("Smallest Number of hits is : " + min + " at hour " + minhour);
}
public static void printTimes(char c, int times) {
if (times >= 70) {
for(int i=0; i< 69; i++){
System.out.print(c);
} System.out.print(">");
} else if (times < 70) {
for(int i=0; i< times; i++)
System.out.print(c);
}
}
}
电流输出示例:
42 29 36 7 5 3 10 13 33 40 51 49 22 58 63 102 65 58 48 24 36 48 52 42
0时:++++++++++++++++++++++++++++++++++++++++++
第 1 小时:++++++++++++++++++++++++++++++
第 2 小时:++++++++++++++++++++++++++++++++++++++
第 3 小时:+++++++
第 4 小时:+++++
第 5 小时:+++
6 小时:++++++++++
7 小时:++++++++++++++
8小时:+++++++++++++++++++++++++++++++++++
9小时:++++++++++++++++++++++++++++++++++++++++++
....
最大点击数为:15 小时 102 次p>
平均点击次数为:每小时 39 次
最少的点击数是:5 小时 3 次
【问题讨论】: