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中看起来很好道歉,但当我复制时,我不得不缩进很多东西,所以它可能看起来没什么问题。
答案 0 :(得分:0)
如果您正在使用输入对话框从用户收集信息,那么为什么还要使用扫描仪对象呢? for 循环中的keyboard.nextLine();
代码行正在等待输入,并且每次迭代都会这样做。