gpt4 book ai didi

java - 将正弦波打印到控制台

转载 作者:搜寻专家 更新时间:2023-11-01 03:50:53 24 4
gpt4 key购买 nike

我正在开发一个将正弦波打印到控制台的 Java 程序。这是我到目前为止写的:

int num = 7;
for (double y = 2; y >= 0; y-=0.2) {
for (double x = 0; x <= num; x+=0.2) {
if ( ((0.1+x) >= Math.asin((double)y-1)) && (((double)x-0.1) <= Math.asin((double)y-1)) )
System.out.print('*');
else
System.out.print(' ');
}
System.out.println();
}

本质上,该程序将每行中的每个字符视为坐标平面上的 0.2 x 0.2 区域。如果正弦函数穿过这个区域,屏幕上会打印一个星号。否则,将打印一个空格。运行时,这会打印到控制台:

        *                          
*
*
*
*
*

有人能告诉我为什么我的程序在打印第一四分之一波浪后停止吗?

最佳答案

它只打印正弦波的第一季度的原因是因为指示的 range of Math.asin :

Returns the arc sine of a value; the returned angle is in the range -pi/2 through pi/2.

一旦您将 x 推进到 Math.PI/2 之后,if 语句的条件将始终为 false.

你可以利用这个事实

sin(π - x) = sin(x)

sin(2π - x) = -sin(x)

通过包含更多条件。 (为清楚起见,我还删除了不必要的转换为 double。)

if ( (0.1+x >= Math.asin(y-1)) && (x-0.1 <= Math.asin(y-1)) ||
(0.1+x >= Math.PI - Math.asin(y-1)) && (x-0.1 <= Math.PI - Math.asin(y-1))
(2*Math.PI -(0.1 + x) <= -Math.asin(y-1)) && (2*Math.PI -(x-0.1) >= -Math.asin(y-1)) )

输出:

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

关于java - 将正弦波打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771899/

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