⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sixpanel.java

📁 一个画1~6次方程的JAVA源程序
💻 JAVA
字号:
import javax.swing.JPanel;
import javax.swing.JOptionPane;
import java.awt.*;
import java.util.ArrayList;
public class sixPanel extends JPanel
{
	private int n;
	private final int hor=500,ver=500;
	public ArrayList<Double> L;
	public sixPanel()
	{
		setBackground(Color.white);
		setPreferredSize(new Dimension(hor,ver));
		getNum();	//输入方程
	}

	private void getNum()	//输入方程
	{
		String numStr;
		L=new ArrayList<Double>();

		do{
			numStr=JOptionPane.showInputDialog("输入方程的次数(1~6)");
			n=Integer.parseInt(numStr);
		}while(n>6&&n<1);

		for(int i=n;i>=0;i--)
		{
			numStr=JOptionPane.showInputDialog("输入方程的x^"+i+"的系数");
			L.add(Double.parseDouble(numStr));
		}

		repaint();
	}

	private double fang(double x,int i)	//求x的i次方
	{
		if(i<1)return 1.0;
		else return x*fang(x,i-1);
	}

	private double fun(double x)	//求x的函数值
	{
		double result=0;
		for(int i=n;i>=0;i--)
			result+=L.get(n-i)*fang(x,i);
		return result;
	}

	public void drawBase(Graphics g)
	{
		g.drawLine(0,ver/2,hor,ver/2);	//x轴
		g.drawLine(hor-4,ver/2-4,hor,ver/2);	//箭头
		g.drawLine(hor-4,ver/2+4,hor,ver/2);
		g.drawString("x",hor-10,ver/2+10);
		//刻度
		g.drawString("0",hor/2-10,ver/2+15);	//  0  刻度
		g.drawLine(hor/2-100,ver/2-4,hor/2-100,ver/2+4);	//  -1  刻度
		g.drawString("-1",hor/2-100,ver/2+15);
		g.drawLine(hor/2+100,ver/2-4,hor/2+100,ver/2+4);	//  1  刻度
		g.drawString("1",hor/2+100,ver/2+15);
		g.drawLine(hor/2-200,ver/2-4,hor/2-200,ver/2+4);	//  -2  刻度
		g.drawString("-2",hor/2-200,ver/2+15);
		g.drawLine(hor/2+200,ver/2-4,hor/2+200,ver/2+4);	//  2  刻度
		g.drawString("2",hor/2+200,ver/2+15);

/////////////********************************************************////////////////

		g.drawLine(hor/2,0,hor/2,ver);	//y轴
		g.drawLine(hor/2-4,4,hor/2,0);	//箭头
		g.drawLine(hor/2+4,4,hor/2,0);
		g.drawString("y",hor/2+4,10);
		//刻度
		g.drawLine(hor/2-4,ver/2+100,hor/2+4,ver/2+100);	//  -1  刻度
		g.drawString("-1",hor/2+4,ver/2+100);
		g.drawLine(hor/2-4,ver/2-100,hor/2+4,ver/2-100);	//  1  刻度
		g.drawString("1",hor/2+4,ver/2-100);
		g.drawLine(hor/2-4,ver/2+200,hor/2+4,ver/2+200);	//  -2  刻度
		g.drawString("-2",hor/2+4,ver/2+200);
		g.drawLine(hor/2-4,ver/2-200,hor/2+4,ver/2-200);	//  2  刻度
		g.drawString("2",hor/2+4,ver/2-200);

	}

	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		int h,v;
		double x,y1,y2;
		g.setColor(Color.black);

		drawBase(g);

		for(h=1;h<=hor/2;h++)	//从y轴开始向两边扩张画500个点
		{
			x=(double)h/100;

			y1=fun(x);	//画x正半轴的点
			v=(int)(y1*100);
			if(v<=ver/2&&v>=-(ver/2))
				g.fillOval(hor/2+h,ver/2-v,1,1);

			y2=fun(-x);	//画x负半轴的点
			v=(int)(y2*100);
			if(v<=ver/2&&v>=-(ver/2))
				g.fillOval(hor/2-h,ver/2-v,1,1);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -