首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出最高的10个

找出最高的10个
EN

Stack Overflow用户
提问于 2013-09-22 09:52:49
回答 2查看 820关注 0票数 0

老实说,我一直在做一项任务,我已经被困住了。我正在创建一个简单的java applet,它允许用户输入10个数字。程序清除该输入,确保只输入一个数字,并且该数字必须介于0和9之间。

到目前为止没有问题。使用给出的例子,搜索网页上适当的语法和逻辑。我的代码编译时没有抱怨。然而,一旦我尝试我的第一个数字,只要它的有效输入,我的程序只是ups和告诉我,我刚刚输入的数字是最大的,而不是等待输入10个数字。

我的猜测是,我有半个applet程序,而且我没有输出正确的,或者循环中的某些东西是错误的,但是逻辑似乎很好。

差点忘了提。我不知道如何在applet中生成输出文本,任何帮助都是很棒的,但这不是我最关心的问题。

我现在的代码是:

代码语言:javascript
复制
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);
    }

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-22 10:03:36

您正在按预期循环10次,但是每次您只是使用getText()获取字段的值。这并不是等待用户更改号码,所以所有10个数字都是相同的。您必须将counterlargest定义为字段,并在每次调用actionPerformed时更改它们。下面是代码:

代码语言:javascript
复制
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;

    private int counter = 0; // These are the variables
    private double largest = 0; // from actionPerformed().

    // ...

    public void actionPerformed(ActionEvent e) {
        // Variable for user input
        double number = 0;

        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;
        // Allows user to input 10 times
        if (counter==10)
        {
            // Display's the largest number that got entered by user
            JOptionPane.showMessageDialog(null,
                    "The largest number entered was " + largest);
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-09-22 10:00:24

是因为这条线

代码语言:javascript
复制
number = Double.parseDouble(numberField.getText());

一旦您在字段中输入了一个数字,您就没有时间在循环完成之前更改字段中的数字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18942532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档