我要说实话,我一直在做一个任务,我比BEYOND卡住了。我正在创建一个简单的Java applet,可以让用户输入10个数字。该程序清理输入,确保只输入一个数字,并且该数字必须介于0和9之间。寻找最高的10
至今没有问题。使用给定的例子,在网络上搜索正确的语法和逻辑。我的代码编译没有抱怨。然而,一旦我尝试了我的第一个号码,只要它的有效输入,我的程序刚起来,并告诉我刚输入的号码是最大的,并且不等待输入10个号码。
我的猜测是我有一半的applet程序,并且我没有输出正确的,或者我的循环中有什么错误,但逻辑看起来不错。
差点忘了提。我不知道如何在applet中输出文本,任何帮助都很棒,但它不是我最关心的问题。
我当前的代码:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class largest extends Applet implements ActionListener{
private static final long serialVersionUID = 1L;
//Create components for Applet
Label numberLabel = new Label("Enter a number:");
TextField numberField = new TextField(10); // Sets the size of the text field, You still may type as much data into the field that you want, input will need to be sanitized later
Label topNumberLabel = new Label("The top number is:");
Button calcButton = new Button("Ok");
public void init()
{
// Add controls to the applet window
add(numberLabel);
add(numberField);
add(topNumberLabel);
add(calcButton);
calcButton.addActionListener(this);
setSize(300, 200); // Sets the size of the applet window
}
public void actionPerformed(ActionEvent e) {
// Variables for counting, user input, and storage for largest number
double counter = 0;
double number = 0;
double largest = 0;
// Allows user to input 10 times
while (counter<10)
{
try { //Sanitize user input, make sure input entered is a number
number = Double.parseDouble(numberField.getText());
} catch (NumberFormatException ex) {
numberField.requestFocus();
JOptionPane.showMessageDialog(null, "Input invalid, please enter an integer",
"///-D-A-T-A---E-R-R-O-R-\\\\\\", JOptionPane.ERROR_MESSAGE);
return;
}
if (number < 0 || number > 9) { //Sanitize user input, make sure the given number is between 0 and 9
numberField.requestFocus();
JOptionPane.showMessageDialog(null,
"The number entered must be between 0 and 9",
"///-D-A-T-A---E-R-R-O-R-\\\\\\", JOptionPane.ERROR_MESSAGE);
return;
}
counter++;
// Determine what the largest number entered is by comparing to a baseline
// of previous numbers or zero if just beginning loop
if (number > largest)largest=number;
}
// Display's the largest number that got entered by user
JOptionPane.showMessageDialog(null," The largest number entered was " + largest);
}
}
你只读了10次相同的数字。当按钮被点击时,你的'actionPerformed'方法运行并循环10次读取相同的数字。我还建议你不要在Applet类中扩展ActionListener,这会破坏OO。你应该使用匿名类。你也可以阅读[this](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)。请特别注意“无人使用AWT”部分... –
您的问题是您的'while'循环在您的'actionPerformed'方法内。所以你只需循环一遍,只需一个动作。当你循环10次后,当然你的循环会退出并显示结果。考虑如何做到这一点_无循环。 –
我必须使用循环。部分任务。我原来的解决方案是由于这个使用数组,只是循环通过一个数组,但已经抛出。 –