我必须有一个随机数生成器从用户获取一个数字,然后在1和用户数之间生成10000个随机数,然后计算最小值,最大值和平均值。这是我到目前为止所拥有的。我被困在actionPerformed方法上。我是一个总菜鸟,所以请尝试解释你的答案。
我有JApplet编码只是无法弄清楚动作执行的方法。我已经搜索了Google的高低帮助以及本周本书中附录c中所涵盖的章节,他们没有解释如何做我们被要求做的事情。我已经完成了课堂上的所有其他任务,但似乎无法获得这个任务,到目前为止已经花了19个小时。
如何将所有数字添加到数组列表中?
package randomNums;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static java.lang.Math.*;
import javax.swing.*;
import java.applet.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Random;
public class RandomNums extends Applet implements ActionListener {
/**
*
*/
// PAINT METHOD
public void paint(Graphics g)
{
Font font = new Font("Arial", Font.BOLD, 18);
g.setFont(font);
g.setColor(Color.WHITE);
g.drawString("Enter A Number", 70, 25);
resize(350, 350);
this.setBackground(Color.BLUE);
}
// CREATES OBJECTS
private static final long serialVersionUID = 1L;
TextField text1, text2, text3, text5;
Label label1, label2, label3, label4;
Button button;
Font font = new Font("Arial", Font.BOLD, 11);
private double all;
// INIT METHOD
public void init() {
setLayout(null);
repaint();
// YOUR NUMBER LABEL
label1 = new Label("Your Number ");
label1.setBounds(25, 35, 100, 20);
setFont(font);
add(label1);
// YOUR NUMBER ENTRY
text1 = new TextField(5);
text1.setBounds(150, 30, 100, 25);
add(text1);
// MAXIMUM
label2 = new Label("The Maximum Number Is: ");
label2.setBounds(25, 100, 150, 25);
setFont(font);
add(label2);
// MAXIMUM ANSWER
text2 = new TextField(5);
text2.setBounds(180, 100, 50, 25);
add(text2);
// MINIMUM
label3 = new Label("The Minimum Number Is: ");
label3.setBounds(25, 170, 150, 25);
setFont(font);
add(label3);
// MINIMUM ANSWER
text5 = new TextField(5);
text5.setBounds(180, 170, 50, 25);
add(text5);
// MEAN
label4 = new Label("The Mean is: ");
label4.setBounds(25, 135, 150, 25);
setFont(font);
add(label4);
// MEAN ANSWER
text3 = new TextField(5);
text3.setBounds(180, 135, 50, 25);
add(text3);
// BUTTON
button = new Button("Enter");
button.setBounds(90, 70, 100, 20);
add(button);
// ACTION LISTENER
button.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
Random ran = new Random(10000);
try {
//NOT SURE HOW TO GET ALL OF THE NUMBERS ADDED TO THE ARRAY LIST
double[] arrList = ran();
//THIS IS NOT WORKING RIGHT ONLY STORING ONE VALUE
all = ran.nextDouble();
for (int i = 0; i < arrList.length; i++) {
System.out.println(arrList[i] + " ");
//THIS IS IN THERE FOR MY TESTING PURPOSES NEED TO TAKE OUT BEFORE SUBMITTING
System.out.println(arrList);
final double TIMES = (double) 10000;
final String LIMIT = text1.getText();
Double.parseDouble(LIMIT);
//FOR LOOP
for (int x = 1; x < TIMES; ++x);
//SETS TEXT FOR MIN BOX (NOT SURE IF IT IS DOING THE CALCULATIONS RIGHT)
text5.setText(ran.nextDouble() + "");
//my comment: another variable after for loop to get mean , fix numbers being saved to an array so they can be added and divided to get mean,
}
}
catch (NumberFormatException m) {
if (getText(text1) == 0)
JOptionPane.showMessageDialog(this,
"Please enter a number between 1- 10,000");
}
}
private int getText(TextField text12) {
// TODO Auto-generated method stub
return 0;
}
}
答案 0 :(得分:2)
要编译代码,请更改:
double[] arrList = ran();
要:
double[] arrList = new double[10000];
java.applet.Applet
。 Swing等价物是javax.swing.JApplet
。使用的唯一Swing组件是JOptionPane
。关于这个问题:为什么选择AWT而不是Swing?有关放弃使用AWT组件的许多理由,请参阅Swing extras over AWT上的此答案。如果您需要支持较旧的基于AWT的API,请参阅Mixing Heavyweight and Lightweight Components。 resize(350, 350);
这不应该在paint方法中完成,也不应该在applet中完成 。 applet的大小在HTML中设置。 Java GUI可能必须在许多平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要组织强大的GUI组件,而是使用布局管理器,或combinations of them,以及布局填充和&amp; white space的边框。
Java GUI可能必须在许多平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要组织强大的GUI组件,而是使用布局管理器,或combinations of them 1 ,以及布局填充和&amp; white space 2 的边框。
1。
2.
答案 1 :(得分:1)
首先,new Random(10000)
创建一个种子为Random
的新10000
对象,而不是范围高达10,000的对象或创建10,000个数字的对象。请参阅http://docs.oracle.com/javase/6/docs/api/java/util/Random.html处的javadocs。重新阅读。
double[] arrList = ran()
- 这不起作用,因为它没有任何意义。请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html(滚动到创建,初始化和访问数组以获取相关信息)。
接下来,您将要使用一个循环(10,000次以上)获取一个随机数(再次查看Random
的javadocs)并将其存储在数组中。
还有其他错误你无疑会遇到(什么是all
?)但这是一个起点。如果您显示错误消息以及您认为无效的消息,我们可以提供更多帮助。
答案 2 :(得分:0)
逐步采取行动
1-设计一个SSCCE,在将其实现到applet之前正确执行基本操作,这是我写的一个快速的:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class main
{
public static void main(String args[])
{
Random rand = new Random();
ArrayList<Integer> array = new ArrayList<Integer>();
int x ;
int sum = 0;
System.out.print("Input a number: ");
Scanner input = new Scanner(System.in);
int mean;
int temp = input.nextInt();
for(int i = 0;i < 10000;i++)
{
x = Math.abs(rand.nextInt()%temp)+1;
System.out.println(x);
array.add(x); //add random number to array
sum += x; //compute sum ro calculate mean later;
}
int min = array.get(0);
int max = array.get(0);
//find min
for(int i = 0; i < array.size();i++)
{
if(array.get(i) < min)
{
min = array.get(i);
}
}
//find max
for(int i = 0; i < array.size();i++)
{
if(array.get(i) > max)
{
max = array.get(i);
}
}
//find mean
mean = sum/array.size();
//result
System.out.println("Min is : "+min);
System.out.println("Max is : "+max);
System.out.println("Sum is : "+sum);
System.out.println("Mean is : "+mean);
}
}
现在您已经完成了核心目标,现在是时候将它集成到JApplet中了。 查看http://docs.oracle.com/javase/tutorial/uiswing/components/applet.html 从那里开始并应用你需要的东西。