gpt4 book ai didi

java - 对于打印多个值的循环麻烦

转载 作者:行者123 更新时间:2023-12-04 15:09:28 24 4
gpt4 key购买 nike

所以问题是:编写一个程序,读取一系列输入值并使用星号显示值的条形图。您可以假设所有值都是正的。先算出最大值。该值的栏应该用 40 个星号绘制。较短的条应按比例使用较少的星号。例如。

***********************
*********
****************************************
****
*******************

下面是我的代码:

    int count = 0;
//Finds largest Value
int largestValue = numbersArray[0];
for (int i = 1; i < numbersArray.length; i++) {
if (numbersArray[i] > largestValue) {
largestValue = numbersArray[i];
count++;
}
}
//Prints number of asterisks
final int MAX = 40;
String asterisks = "****************************************";
for (int i = 0; i < count + 2; i++) {
System.out.print(numbersArray[i]);
if (numbersArray[i] == largestValue) {
System.out.print(asterisks);
} //if (numbersArray[i] != largestValue) {
else {
for (int j = 0; j < (40 * numbersArray[i] / largestValue); j++) {
System.out.print("*");
}
}
System.out.println();
}

此代码似乎无法正常运行。如果我按以下顺序输入值:5 8 6 4 7,它将只打印 5 和 8 的星星,而不是其余的。基本上它会为值打印星号,直到最大数为止。

我找不到我的代码有什么问题。任何帮助将不胜感激!

感谢阅读<3

最佳答案

首先,您不需要 count 变量 - 它对您没有任何帮助,并且出于某种原因您会限制自己(每次找到更大的元素时都会递增,因此您只会递增一次因为没有大于 8 的东西)。

你应该做的是找到最大值,就像你所做的那样,然后遍历整个数组并显示与该值成比例的每个元素,就像你所做的那样(但没有实际最大值的特殊情况 - 即太残忍了)。

此外,您应该注意两个整数相除会得到一个整数,这不是您想要的,因此您必须将其中一个整数转换为floatdouble

//finds largest Value
int largestValue = numbersArray[0];
for (int i = 1; i < numbersArray.length; i++) {
if (numbersArray[i] > largestValue) {
largestValue = numbersArray[i];
}
}

//Prints number of asterisks
final int MAX = 40;
for (int i = 0; i < numbersArray.length; i++) {
int portion = (int)(MAX * (numbersArray[i] / (float)largestValue));
for (int j = 0; j < portion; j++) {
System.out.print("*");
}
System.out.println();
}

所以你会发现最大值是 8。

然后对于 5,您将执行 5/8,即 0.625,乘以 MAX (40) 将是 25,因此您将打印 25 *

然后对于 8 - 8/8 = 1.0 * MAX = 40 所以你将打印整个 40 *

对于 6 - 6/8 = 0.75 * MAX = 30 所以你将打印 30 * 等等。

请注意,如果您想对其进行微调,您可以使用 Math.round 而不是简单地将 portion 转换为 int(这只是截断 float ) .

关于java - 对于打印多个值的循环麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36832381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com