ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュの2次関数のグラフ

  • mixiチェック
  • このエントリーをはてなブックマークに追加
自分で途中まで作ってみたのですが、ここからよく分かりません。教えてください!!



//<applet code ="Kansu.class" width="270" height="180"></applet>

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Kansu extends JApplet {
GraphFunctionPanel functionPanel; //関数パネル
GraphPanel graphPanel;      //関数パネル

public void init() {
functionPanel = new GraphFunctionPanel(this); //関数パネルの生成
graphPanel = new GraphPanel(); //グラフパネルの生成

setParameters(1,2,-3); //初期値設定

Container cp = getContentPane();
cp.add(functionPanel,BorderLayout.NORTH); //台紙に貼り付ける
cp.add(graphPanel,BorderLayout.CENTER); //台紙に貼り付ける

}

public void setParameters(double a2,double a1, double a0); {
graphPanel.setParameters(a2,a1,a0); //グラフパネルに係数情報を伝える
}
}



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class GraphFunctionPanel extends JPanel implements ActionListener {
Kansu kansu; //メインパネル
JTextField text2,text1,text0;  //係数フィールド

public GraphFunctionPanel(Kansu kansu) {
this.kansu= kansu; //メインパネルを設定

  setLayout(new FlowLayout());
  add(new JLabel("f(x)="));
  add(text2=new JTextField("1",3));
  add(new JLabel("x^2+"));
  add(text1 = new JTextField("2",3));
  add(new JLabel("x+"));
add(text0 = new JTextField("-3",3));

text2.addActionListener(this); //イベントリスナー登録
text1.addActionListener(this);
text0.addActionListener(this);
}
public void actionPerformed(ActionEvent e) { // イベント処理

double a2=Double.parseDouble(text2.getText()); //2次の係数
double a1=Double.parseDouble(text1.getText());
double a0=Double.parseDouble(text0.getText());

kansu.setParameters(a2,a1,a0); // メインパネルに係数情報を伝える
}
}




import javax.swing.*;
import java.awt.*;

public class GraphPanel extends JPanel {
  double xMax = 10.0; // xの最大値
 double yMax = 10.0; // yの最大値
   double a2 = 1; //2次の係数
 double a1 = 2; // 1次の係数
 double a0 = -3; //0次の係数

public GraphPanel() {
setBackground(Color.WHITE);
}

public void paint(Graphics g) {
super.paint(g);

int width = getSize().width; // パネルの幅
int height = getSize().height; // パネルの高さ
double dx = 2*xMax/width; //1ドット当たりのxの値
double dy = 2*yMax/height; // 1ドット当たりのy値

  g.setColor(Color.BLACK);
  g.drawLine(0,height/2,width,height/2); //x軸の描画
  g.drawLine(width/2,0,width/2,height); //y軸の描画

  int number = width; //点の数
  int [][] xx = new int[number]; //x座標の配列
  int [][] yy = new int[number]; //y座標の配列

  for(int i =0; i< number; i++) {
    xx[i] =i;
    double x = -xMax +dx*i; //xの値
    double y =1*x^2+2*x+a0;   //yの値
    yy[i] =height/2-(int)(y/dy);
}
 g.setColor(Color.BLUE);
 g.drawPolyline(xx, yy, number); //曲線を描画
}

public void setParameters( double a2,double a1, double a0) {

  this.a2= a2; //2次の係数設定
  this.a1= a1; //1次の係数設定
  this.a0=a0;  //0次の係数設定
  repaint();
 }
}

コメント(3)

そのままコンパイルすると10個ほどエラーが出るようです。
まずはこれを取り除くべく頑張ってみましょう。

x^xはJavaでは排他的論理和を表し、boolean型用の演算子です。
二乗はMath.pow(x,2.0)とするか、単にx*xで出来ます。

あとはメソッド(public void setParameters(double a2,double a1, double a0); {)を書いている場所と配列が一次元か二次元か、関数にa1とa2が反映されているか、くらいでしょうか。

コンパイルエラーを取り除き、少しだけ手直しをしたらうまく動きましたよ。基本的な方針は大丈夫だと思います。頑張ってください。
メソッド(・・・)を書いている場所と
は誤読しやすかったですね。書いてある場所が間違っているのではなく、そこらへんがちょっと違うよ、という意味です。
頑張ってやってみます^^
ありがとうございましたっ!!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング