0

インターネットに詳しい人。私は現在、1 年生のプログラミング クラスの課題に取り組んでいますが、正直なところ、プログラミングは私の最大のスキルではありません。したがって、この小さな問題についての助けをいただければ幸いです。

このプログラムは本質的に数字当てゲームであり、推測を配列リストに保存およびソートし、正しく推測すると、平均、最低の推測、正しい推測のインデックス配列、平均、および華氏に変換された温度を表示します。 . 課題で 40 と私の学生 ID の最大の数字が指定されているため、9 から 40 の間です。また、単純にクラスを 1 つにまとめることができるのに、不要な量のクラスが発生する理由も、割り当て仕様の誤りです。

私が抱えている問題は、正しいか間違っているかにかかわらず、温度の推測をarraylistに保存することです。コンストラクター内で arraylist を正しく初期化したと思いますが、jTextField から推測を取得する方法や場所がわかりません。それを理解したら、表示された結果に対して私が書いた他のメソッドを組み込み、この割り当てを完了することができます。

繰り返しますが、私の一般的な初心者には申し訳ありません。助けていただければ幸いです。

package TemperatureGuessApp;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import javax.swing.*;

public class TemperatureFrame extends JFrame {

public JFrame mainFrame;
public JLabel prompt1, prompt2;
public JTextField userInput;
public JLabel comment;
public JButton restart;
public int randomTemperature;
public int min = 9;
public int max = 40;
public int guessTemperature;
public int sumTemperature;
public double avgTemperature;
public int lowestTemperature;
public int convertedTemperature;
public int indexTemperature;
public Color background;

public TemperatureFrame() {

    super("Temperature Guess/Conversion Application");
    prompt1 = new JLabel("Randomly generated temperature is between 9 and 40.");
    prompt2 = new JLabel("Write temperature (your guess) or -1 (for exit) and press enter key:");
    userInput = new JTextField(5);
    userInput.addActionListener(new GuessHandler());
    ArrayList<Integer> guesses = new ArrayList<>();
    comment = new JLabel("The results will be shown here.");
    restart = new JButton("Start Again - Generate A New Temperature");
    restart.addActionListener(
            new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    userInput.setText("");
                    comment.setText("The results will be shown here.");
                    RandomTemperature();
                    userInput.setEditable(true);
                }
            });

    setLayout(new FlowLayout());
    background = Color.LIGHT_GRAY;

    add(prompt1);
    add(prompt2);
    add(userInput);
    add(comment);
    add(restart);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500, 150);
    setLocationRelativeTo(null);
    setVisible(true);
    setResizable(false);

    RandomTemperature();
    ConvertTemperature();
}

public void RandomTemperature() {
    Random random = new Random();
    randomTemperature = random.nextInt(max - min) + min;
}
public void SortTemperature() {   
}
public void FindLowestTemperature() {    
}
public void FindAverageTemperature() {    
}
public void FindIndexTemperature() {    
}
public void ConvertTemperature() {
    convertedTemperature = randomTemperature * 9 / 5 + 32;
}

class GuessHandler implements ActionListener {

    @ Override
    public void actionPerformed(ActionEvent e) {
        {

            guessTemperature = Integer.parseInt(userInput.getText());
            {   

                if (guessTemperature > randomTemperature) {
                    comment.setText("Temperature guessed is higher than the random temperature.");
                    userInput.setText("");
                    userInput.setEditable(true);
                }

                if (guessTemperature < randomTemperature) {
                    comment.setText("Temperature guessed is lower than the random temperature.");
                    userInput.setText("");
                    userInput.setEditable(true);
                }

                if (guessTemperature == randomTemperature) {
                    comment.setText("Temperature guessed is equal to the random temperature.");
                    JOptionPane.showMessageDialog(null, "Temperature guessed is equal to the random temperature.\n\n1. Lowest temperature is:" + lowestTemperature + "\n2. Average temperature is:" + avgTemperature + "\n3. Array index of correctly guessed temperture is:" + indexTemperature + "\n4. Temperature in Farenheit is:" + convertedTemperature + "\n\nThank you for playing!");
                } 
                else if (guessTemperature == -1) {
                    System.exit(0);
                }
            }
        }
    }
}    
}
4

1 に答える 1

0

1.まずPojo、プレイヤーのすべてのデータを保存する を作成します...

例えば

public class Player{

    int prompt1;
    int prompt2;
    int userInput;
    String comment;
    int restart;

  }

2.次にそれらを保存しArrayListます....

/////////////////////////編集済み////////////////////// ////////

public class Player{

        int prompt1;
        int prompt2;
        int userInput;
        String comment;
        int restart;

    public Player(int p1, int p2, int usInput, String c, int res){

       this.prompt1 = p1;
       this.prompt2 = p2;
       this.userInput = usInput;
       this.comment = c;
       this.restart = res ;


    }

}

 public class Test{

   ArrayList<Player> arList = new ArrayList<Player>();

   arList(new Player(p1, p2, usInput, c,  res));  // These Arguments u must declare and initialize....


  }

///////////////////////編集済み///////////////////////// /

わかりました... int guessTemperatureArrayListfrom WITH JTextField USING POJOに追加することは、この方法で行うことができます。

ArrayList<Integer> arList = new ArrayList<Integer>();

String str = jText.getText().toString();

int gTemp = Integer.parseInt(str);

arList.add(gTemp);

ここで、TemperatureInput、Name、Age、Score などの 4 つの属性を持つこの Player があるとします。N 人のプレイヤーがこのゲームをプレイしているとします。その場合、Pojo と Collection を使用する必要があります (つまり、リスト、リスト、セット、マップ)

public class Player{

    int guessTemp;
    String name;
    int age;
    long score;


    public Player(int gTemp, int name, int age, int score){

      this.guessTemp = gTemp;
      this.name = name;
      this.age = age;
      this.score = score;
    }

   public int getGuessTemp() {
        return guessTemp;
    }
    public void setGuessTemp(int guessTemp) {
        this.guessTemp = guessTemp;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public long getScore() {
        return score;
    }
    public void setScore(long score) {
        this.score = score;
    }


}

今...別のクラスからは、このようになるはずです....

public class Test{


public static void main(String[] args){

        ArrayList<Player> pList = new ArrayList<Player>();

       String name = jName.getText().toString();
       long score = Long.parseLong(jScore.getText().toString());
       int age =  Integer.parseInt(jAge.getText().toString());
       int gTemp = Integer.parseInt(jTemp.getText().toString());


       pList.add(new Player(gTemp, name, age, score));


   }


}
于 2012-09-05T11:02:08.263 に答える