私は正直に言うと、私は任務に取り組んでいて、立ち往生していません。ユーザーが 10 個の数字を入力できる単純な Java アプレットを作成しています。プログラムはその入力をサニタイズし、数字のみが入力されていること、および数字が 0 から 9 の間でなければならないことを確認します。
これまでのところ問題はありません。与えられた例を使用し、Web を検索して適切な構文とロジックを探しました。私のコードは文句なしにコンパイルされます。ただし、最初の数字を試してみると、有効な入力がある限り、プログラムが起動し、入力した数字が最大であり、10 個の数字を入力するのを待ちません。
私の推測では、アプレット プログラムの半分があり、出力が正しくないか、ループ内の何かが間違っていると思われますが、ロジックは適切に見えます。
言及するのをほとんど忘れていました。アプレットで出力テキストを作成する方法がわかりません。それに関するヘルプは素晴らしいですが、それは私の主な関心事ではありません。
私の現在のコード:
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);
}
}