离散数学的程序设计附加题,用Java画离散化后的函数图像。本来就用Graphics2D画画图就好了,跑起来也没啥问题,我不知怎么想的把离散间隔设为0.001,发现居然画了一条直线出来。于是迫于强迫症开始debug……

找了好久没发现问题,傻乎乎的一直在检查二维坐标的问题,后来决定还是回去看一看:

    comp2D.setColor(Color.red);  
    double dt = 0.01;
    double xt;
    for (double t = 0.00;t <= 8.00;t += dt){
        xt = -2 * t * Math.sin(Math.pow(t,2));
        y = 300 + 8 - (int) (xt * 10);
        comp2D.drawString("*", x - 2, y);
        x += (dt * 100);
    }

这一段是绘图的实现(各位大佬,我知道逻辑混乱,毫无优化……Emmmm反正它能跑,不是么,哈哈哈管他呢),除了乱一点之外感觉也没啥问题(其中的加减数据是在凑和“手绘”坐标轴的相对位置,论笨办法的实用性),coderunner插入断点debug居然报错,又不想再开个intellij,于是又用了土办法,for循环最后插一行垃圾佬代码,没错就是它

    System.out.println(x);

运行发现console输出的x全是100,瞬间傻了,转了一圈发现问题恨不得抽自己两下,xint型,dt=0.001时x += (dt*100)每次加的量存到x里就四舍五入没了……

当时因为有别的事,于是也没认真改,新建了个double导过去,编译报错……巴拉巴拉大概是comp2D.drawString()后面接受不了double,于是改float,虽然一团乱麻也算搞定了。

    double dt = 0.01;
    double xt;
    float xx = 100;
    float yy = 0;
    for (double t = 0.00;t <= 8.00;t += dt){
    xt = -2 * t * Math.sin(Math.pow(t,2));
        yy = 308 - (int) (xt * 10);
        comp2D.drawString("*", (xx - 3), yy);
        xx += (dt * 100);
    }

Emmm懒得去优化了,哈哈哈哈哈哈。全部代码

没想到居然真的有一天被变量类型搞了,总之就是一句话。菜的真实 →_→ 。我要去学鸡你太美了,律师函保命。