Java程序不显示对话框中所需的所有内容

时间:2017-11-25 01:15:05

标签: java

import java.util.Scanner;
import javax.swing.*;

public class p1 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    Scanner keyboard=new Scanner(System.in);

    Employee[] employee=new Employee[100];
    double avg;
    double sum= 0.0;
    int count;
    String c = JOptionPane.showInputDialog(null, "Enter the number of records: ");
    count= Integer.parseInt(c);
    String name,ssn;
    double salary;

    for(int i=0;i<count;i++){
        keyboard.nextLine();
        name = JOptionPane.showInputDialog(null, "Enter name of Employee: ");
        ssn = JOptionPane.showInputDialog(null, "Enter Employee's SSN: ");
        String s = JOptionPane.showInputDialog(null, "Enter Emplyee's Salary: ");
        salary= Double.parseDouble(s);
        employee[i]=new Employee(name,ssn,salary);
    }
    for(int i=0;i<count;i++){
        sum=sum+employee[i].getSalary();// TODO code application logic here
    }

    avg=sum/count;
    for(int i=0;i<count;i++){
        if(employee[i].getSalary()<avg){
            JOptionPane.showMessageDialog(null, "Below average");
            employee[i].writeOutput();
        }
        else{
            JOptionPane.showMessageDialog(null, "Above average");
            employee[i].writeOutput();
        }
        System.out.println();
        System.out.println();
    }
}

}

class Person
{
    String name;
    Person()
    {
        name = "No name yet";
    }
    public Person(String initialName)
    {
        name = initialName;
    }
    public void setName(String newName)
    {
        name = newName;
    }
    public String getName()
    {
        return name;
    }
    public void writeOutput()
    {
        JOptionPane.showMessageDialog(null, "Name: " + name);
    }
    public boolean hasSameName(Person otherPerson)
    {
        return this.name.equalsIgnoreCase(otherPerson.name);
    }
}

class Employee extends Person{
String SSN;
double salary;

Employee(){
    super();
    SSN="";
    salary=0.0;
}

public Employee(String nam,String sn,double sal){
    super(nam);
    setSSN(sn);
    salary=sal;
}
public void setSSN(String sn){
    int count=0;

    for(int i=0;i<sn.length();i++){
        if(sn.charAt(i)!=' '&&sn.charAt(i)!='-')
            count++;
    }
    try{
        if(count!=9){
            throw new SSNLengthException();
        }
        else{
            for(int i=0;i<sn.length();i++){
                if((sn.charAt(i)>'9' || sn.charAt(i)<'0')){
                    if(sn.charAt(i) !=' ' && sn.charAt(i)!='-')
                    throw new SSNCharacterException();
                }
            }
            SSN = sn;
        }
    }
    catch(Exception ex){System.out.println(ex.getMessage());}
    SSN=sn;
}
public void setSalary(double sal){
    salary=sal;
}

public String getSSN(){
    return SSN;
}
public double getSalary(){
    return salary;
}
public void writeOutput(){
    super.writeOutput();
    JOptionPane.showMessageDialog(null, "SSN: " + SSN);
    JOptionPane.showMessageDialog(null, "Salary: " + salary);
}
}

 class SSNLengthException extends Exception{
     public SSNLengthException(){
       JOptionPane.showMessageDialog(null, "Not valid length");
    }
     public SSNLengthException(String ms){
         super(ms);
    }
}

class SSNCharacterException extends Exception{
    public SSNCharacterException(){
        JOptionPane.showMessageDialog(null, "Not digit");
    }
    public SSNCharacterException(String ms){
        super(ms);
    } 
}

所以当我只运行我的程序时#34;输入记录数:&#34;将在对话框中显示并在您输入内容后输入。没有别的东西弹出,但是假设有一系列对话框要求SSN和Salary以及Name,那么如果它们高于或低于平均工资,它会输出任何输入。我无法弄清楚为什么它不输出其他对话框。运行时不会显示错误。此外,我为格式化程序在Netbeans中看起来很好道歉,但当我复制时,我不得不缩进很多东西,所以它可能看起来没什么问题。

1 个答案:

答案 0 :(得分:0)

如果您正在使用输入对话框从用户收集信息,那么为什么还要使用扫描仪对象呢? for 循环中的keyboard.nextLine();代码行正在等待输入,并且每次迭代都会这样做。