当前位置: 首页 > 知识库问答 >
问题:

无论if语句如何自定义异常输出

苗烈
2023-03-14

我正在尝试从输入提示中获取此人的姓名。获取名称长度,如果长度小于1,则抛出自定义错误抛出LineLimitException,并再次提示用户输入他们的名称。我知道我在这里投入了很多代码,但我希望它能让我想要做的事情更清楚。

LineLimitException类

     public LineLimitException(String message){
           super(message);
     }
    }

在这里我提示并存储name字段

            name = input.nextLine();
            int strSizeName = name.length();
            if(strSizeName < 1) {

I'm getting these results in the console
How many employees are there?
2
Enter employee 1's name
Name must be greater than one character. Please try again.
Enter employee 1's name  *<--- this is before I can even enter a name*
Enter employee's hourly wage *<-- prompts for hourly wage before I got the name.*
public class Driver {
    
    /**
     * defualt constructor
     */
    public Driver() {
    }

    /**
     * Main method - prompts the user for name, hours worked, and hourly salary. Stores it in a person object
     * @author 
     * @param args
     * 
     */
    
    public static void main(String[] args) throws LineLimitException{
        ArrayList<Employee> person = new ArrayList<Employee>();

        // prompt user for the total number of employees
        Scanner input = new Scanner(System.in);
        System.out.println("How many employees are there?");

        String name;
        int numEmployees = input.nextInt();

        for (int count = 1; count <= numEmployees; count++) {
            System.out.println("Enter employee " + count + "'s name");


            **name = input.nextLine();
            int strSizeName = name.length();
            if(strSizeName < 1) {
                //Why is this showing up afterI give emploee count?
                System.out.println("Name must be greater than one character. Please try again.");
                //reprompt the user for a name
                System.out.println("Enter employee " + count + "'s name");
            }else {
                continue;
            }**
            
            
            System.out.println("Enter employee's hourly wage");
            double wage = input.nextDouble();
            System.out.println("Enter how many hours worked");
            double hrsWkd = input.nextDouble();

            person.add(new Employee(name, wage, hrsWkd)); // add an employee object to the ArrayList
            printSalaryReport(person, wage, hrsWkd);
        }
        input.close();
        System.out.println("CSV File Created.");
    }

    /**
     * Method printSalaryReport - prints the employee person objects name, hours worked
     * hourly salary and gross salary to a csv file.
     * @param person in ArrayList
     * @param getHours_Worked 
     * @param getHourly_Salary 
     * @throws IncorrectFileNameException 
     */
    private static void printSalaryReport(ArrayList<Employee> person, double getHours_Worked, double getHourly_Salary) {
        String CSV_SEPARATOR = ",";
        String fileName = "employee.csv";
         try
            {
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8"));
                String Header = "Name, Hourly Salary, Hours Worked, Pay";
                bw.write(Header.toString());
                bw.newLine();
                
                for (Employee man : person)
                {
                    StringBuffer manStr = new StringBuffer();
                    manStr.append(man.getName());
                    manStr.append(CSV_SEPARATOR);
                    manStr.append(man.getHourly_Salary());
                    manStr.append(CSV_SEPARATOR);
                    manStr.append(man.getHours_Worked());
                    manStr.append(CSV_SEPARATOR);
                    manStr.append(calculateSalary(man.getHours_Worked(), man.getHourly_Salary()));
                    bw.write(manStr.toString());
                    bw.newLine();
                }
                bw.flush();
                bw.close();
                
            }
            catch (IOException err){}
            
    }

    /**
     * Method calculateSalary takes the hours worked and hourly salary and returns
     * the result of each multiplied.
     * 
     * @param getHours_Worked
     * @param getHourly_Salary
     * @return
     */
    private static Object calculateSalary(double getHours_Worked, double getHourly_Salary) {
        double salary = getHourly_Salary;
        double hoursWorked = getHours_Worked;
        double wkAmount = salary*hoursWorked;
        return wkAmount;
    }

}

共有1个答案

张俊茂
2023-03-14
if (strSizeName < 1) {
    System.out.println("Name must be greater than one character. Please try again.");
    count--;
    continue;
}

System.out.println("Enter employee's hourly wage");
double wage = input.nextDouble();
System.out.println("Enter how many hours worked");
// ...

这解决了你的问题吗?

 类似资料:
  • 问题内容: 首先,这是问题的简要摘要: 是否可以有条件地运行语句?类似于以下内容: 现在,我知道可以使用存储过程来做到这一点。我的问题是:我可以在查询中这样做吗? 现在,我为什么要这样做? 假设我们有以下两个表: 现在,假设有一个订购20个Voodoo娃娃(产品ID 2)的订单。 我们首先检查手头上是否有足够的数量: 然后,如果计算结果为true,则运行查询。 到目前为止,一切都很好。 但是,并发

  • 问题内容: 这对我完全没有意义。 这是我的代码: 即使我的输出是 我正在用Java执行此操作,并且正在使用Eclipse galileo,因此,每次我编译/运行程序时,它都会将其保存,因此编译器应获取程序的更新版本。这是怎么回事? 问题答案: 一个常见的错误。删除语句末尾的。 顺便说一句,如果我使用方括号,并且使用IDE的代码格式化程序,那么我总是写以下内容。 这意味着如果您放错了位置,或者可能更

  • 主要内容:前记,1.自定义视图,2.自定义异常,3.自定义异常的原理前记 在前面的文章中, 表示了视图解析的原理和异常解析器的解析原理。 这篇通过如何自定义视图和自定义异常处理和自定义异常处理的原理进行说明。 这里说明一下, 自定义的视图和自定义的异常都是会代替容器默认的组件的, 异常还好说, 就是不符合就抛, 视图的话需要注意一下优先级, 可以在自定义的视图解析器上加上注解。 1.自定义视图 这里原理就是添加一个视图和视图解析器, 然后放入容器中, 最后访问相应

  • 如果 Java 提供的内置异常类型不能满足程序设计的需求,这时我们可以自己设计 Java 类库或框架,其中包括异常类型。实现自定义异常类需要继承 Exception 类或其子类,如果自定义运行时异常类需继承 RuntimeException 类或其子类。 自定义异常的语法形式为: 在编码规范上,一般将自定义异常类的类名命名为 XXXException,其中 XXX 用来代表该异常的作用。 自定义异

  • 本文向大家介绍Java如何实现自定义异常类,包括了Java如何实现自定义异常类的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java如何实现自定义异常类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 自定义异常类步骤   创建一个类继承异常父类Exception   在具体的实现方法首部抛出异常类(自己创建的那个类),throws的

  • 在我的webflux应用程序中,我想通过WebClient发送一些请求。我想处理所有条件(200、401、403和...response ),然后向客户端响应一个json。对于错误状态代码,我想使用@RestControllerAdvice,所以我必须抛出一个自定义异常,然后在控制器建议中处理自定义json。参见示例代码: 现在异常处理程序如下: Webclient获得一个包含json主体的401