1

A、T、G、C の各文字は、プロットをグラフ化する方向を表します。具体的には、「A」は右へ移動、「T」は下へ移動、「C」は上へ移動、「G」は左へ移動を意味します。アプレットが A、T、C を読み取ると、グラフが正しくプロットされます。しかし、G をプロットすると、グラフが台無しになります。「ACACACA」と入力すると、グラフが上り階段のようになります。「gtgtgt」と入力すると、グラフは階段のように見えるはずですが、稲妻のように見えます。

import java.applet.Applet;
import java.awt.Button;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class If_Graph extends Applet implements ActionListener {

    Panel panel;
    TextArea textarea, outputArea;
    Button move;
    String thetext;
    Scanner reader = new Scanner(System.in);
    String thetext2;
    int size, p, q;
    int x, y;

    public void init() {

        setSize(500, 500); //set size of applet

        panel = new Panel();
        add(panel);
        setVisible(true);
        textarea = new TextArea(10, 20);
        add(textarea);

        move = new Button("Graph");
        move.addActionListener(this);
        add(move);
    }

    public void actionPerformed(ActionEvent e) {
        XYSeries series = new XYSeries("DNA Walk");

        x = 0;
        y = 0;
        series.add(x, y);

        if (e.getSource() == move) {
            thetext = textarea.getText(); //the text is the DNA bases pasted
            thetext = thetext.replaceAll(" ", ""); //removes spaces
            thetext2 = "";

            for (int i = 0; i < thetext.length(); i++) {
                char a = thetext.charAt(i);

                switch (a) {
                    case 'A': //moves right
                        x += 1;
                        y += 0;
                        series.add(x, y);
                        break;
                    case 'a':
                        x += 1;
                        y += 0;
                        series.add(x, y);
                        break;
                    case 'C': //moves up
                        x += 0;
                        y += 1;
                        series.add(x, y);
                        break;
                    case 'c':
                        x += 0;
                        y += 1;
                        System.out.println(x + "," + y);
                        series.add(x, y);
                        break;
                    case 'G': //move left
                        x -= 1;
                        y += 0;
                        series.add(x, y);
                        System.out.println("G is: " + x + "," + y);
                        break;
                    case 'g':
                        x -= 1;
                        y += 0;
                        System.out.println("g is: " + x + "," + y);
                        series.add(x, y);
                        break;
                    case 'T': //move down
                        x += 0;
                        y -= 1;
                        series.add(x, y);
                        System.out.println("T is: " + x + "," + y);
                        break;
                    case 't':
                        x += 0;
                        y -= 1;
                        series.add(x, y);
                        System.out.println("t is: " + x + "," + y);
                        break;
                    default: // series.add(0,0);
                        break;
                }
            }
            XYDataset xyDataset = new XYSeriesCollection(series);
            JFreeChart chart = ChartFactory.createXYLineChart(
                "DNA Random Walk", "", "", xyDataset,
                PlotOrientation.VERTICAL, true, true, false);
            ChartFrame frame1 = new ChartFrame("DNA Random Walk", chart);
            frame1.setVisible(true);
            frame1.setSize(300, 300);
            outputArea.setText(thetext2);
        }
    }
}
4

1 に答える 1

0

XYSeries「並べ替えと複製のデフォルトの両方をコンストラクターで変更できる」ことを許可することに注意してください。だからこれを試してください:

XYSeries series = new XYSeries("DNA Walk", false, true);

代替テキスト

また、switchステートメントの次のバリアント形式を検討してください。

switch (a) {
    case 'A': case 'a': //moves right
        x += 1;
        y += 0;
        series.add(x, y);
        System.out.println("A is: " + x + "," + y);
        break;
    case 'C': case 'c': //moves up
    ...
于 2010-05-13T00:09:07.607 に答える