我正在编写一个将正弦波输出到控制台的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.2x0.2区域。如果正弦函数穿过这个区域,屏幕上会打印一个星号。否则,打印一个空格。当运行时,这将被打印到控制台:
        *                          
     *                             
   *                               
  *                                
 *                                 
*                                  有人能告诉我为什么我的程序在打印第一季度的波浪后停止吗?
发布于 2015-02-27 18:50:43
这个问题似乎是由if语句的条件引起的,它几乎总是计算为false。您应该检查条件表达式后面的微积分。我发现增加num对这里没有什么帮助。
也许您应该打印另一个字符,而不是空白,例如用System.out.print(' ');代替System.out.print('_');。通过这种方式,您可能能够理解为什么您的程序会这样做。改进您的算法也可能有帮助。
https://stackoverflow.com/questions/28771899
复制相似问题