我正在制作一个直方图



我正试图通过输入一个值并舍入它来制作直方图。四舍五入的值应该打印出星号的个数。

我执行了以下代码并输入了一个值,但是,输出为空。

public class Histogram
{
public static void main(String args[]) 
{
histogram obj = new histogram();
obj.histogram(13.5);
}
}
class histogram
{
public void histogram(double num)
{
int roundNum = (int)(num);
if (roundNum == 14)
{
System.out.println("**************" + num);
}
if (roundNum == 3)
{
System.out.println("***" + num);
}
if (roundNum == 16)
{
System.out.println("****************" + num);
}
if (roundNum == 0)
{
System.out.println("" + num);
}
if (roundNum == 1)
{
System.out.println("*" + num);
}
}
}

在Java中,typecasting从原语类型double变为原语类型int可以简单地认为是去掉小数点部分.

例如,

System.out.println((int) 13.1); // prints 13
System.out.println((int) 13.5); // prints 13
System.out.println((int) 13.9); // prints 13

因此,当调用obj.histogram(13.5);时,函数参数num13.5,操作int roundNum = (int)(num);int roundNum = (int)(13.5);相同,并将13赋值给变量roundNum

由于没有if statements处理这种情况(roundNum13),因此不生成输出。

另一方面,为了反复检查相同的变量而硬编码大量的if statements通常会导致不必要的复杂、低效和难以阅读的代码。通过使用roundNum变量,您能想到更好的方法来为直方图打印"*"字符吗?(提示:试试for loops)

改变int roundNum = (int)(num);to int round = Math.round((float)num);它应该给你想要的输出。

相关内容

  • 没有找到相关文章

最新更新