在java控制台中显示sin(x)波

在java控制台中显示sin(x)波,java,math,Java,Math,我的问题是显示一个正弦(x)波,但将其垂直转换为Y轴90度 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.ou

我的问题是显示一个正弦(x)波,但将其垂直转换为Y轴90度

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();
}

int num=7;
对于(双y=2;y>=0;y-=0.2){

对于(双x=0;x=Math.asin((双)y-1))&((双)x-0.1)我的建议是创建一个与输出显示相对应的字符数组。根据需要,用星号填充数组;您可以在X或Y上迭代,更简单的方法是,您不必像直接输出到控制台时那样受到限制。根据代码的组织方式,您可以填充数组,然后转置它(即,将(i,j)元素与(j,i)元素交换)。最后,逐元素打印出数组元素。

(double x=0;x请阅读。您想做什么,预期输出是什么?只需翻转正常sin的x和y值即可进行绘图?我怀疑是否有函数可以为-PI和PI之间的x提供无限的解决方案,该解决方案将对应于y中的高度。如果
asin
被正确处理。但是1D数组将有助于减少对
打印的调用次数。好吧,使用2d数组(本质上是一个显示图像)更简单、更通用。使用正弦的倒数很容易,但许多常用函数没有任何简单的倒数,甚至允许使用多个倒数(准确地说,是预映像)。这是可以做到的,但我不清楚这样做的好处是否大于麻烦,除非存在确实需要这种方法的硬约束。感谢各位,我终于找到了使用for循环的解决方案:
for (double x = 0; x <= Math.PI; x += 0.15) {
            int sinValue = (int) Math.round(Math.sin(x) * 30);
            for (int j = 0; j < sinValue; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}