Java 异常处理和字符串转换器

Java 异常处理和字符串转换器,java,type-conversion,numberformatexception,Java,Type Conversion,Numberformatexception,下面是我的代码,它还没有完成 import java.lang.* ; import java.util.Scanner; public class pbtwashing { public static void main(String args[]) { Scanner in = new Scanner(System.in); String satu,dua,tiga,empat,weightrange,message,minus,rinse,

下面是我的代码,它还没有完成

import java.lang.* ;
import java.util.Scanner;

public class pbtwashing
{
    public static void main(String args[])
    {
        Scanner in = new Scanner(System.in);
        String satu,dua,tiga,empat,weightrange,message,minus,rinse,spin,d,comp;
        int x,min;
        double a;
        minus="\t\t  -----------------------------------------------------------------------------";
        System.out.println("\n\n\n\t\t  ----------------------------------------------------------------------------");
        System.out.println("\t\t|                            Welcome To PBU Laundry !                          |");
        System.out.println("\t\t|                       There are 4 type of wash you can choose.               |");
        System.out.println("\t\t| -----------------------------------------------------------------------------|");
        System.out.println("\t\t| a-Normal Wash   |  a. 2kg == 30 Mins | b. 3kg == 40 Mins | c. 5kg == 50 Mins |");
        System.out.println("\t\t|                 |                                                            |");
        System.out.println("\t\t| -----------------------------------------------------------------------------|");
        System.out.println("\t\t| b-Hard Wash     |  a. 2kg == 40 Mins | b. 3kg == 50 Mins | c. 5kg == 60 Mins |");
        System.out.println("\t\t|                 |                                                            |");
        System.out.println("\t\t| -----------------------------------------------------------------------------|");
        System.out.println("\t\t| c-Delicate Wash |  a. 2kg == 30 Mins | b. 3kg == 40 Mins | c. 5kg == 50 Mins |");
        System.out.println("\t\t|                 |       (Rinse after wash step will take extra 3 seconds)    |");
        System.out.println("\t\t| -----------------------------------------------------------------------------|");
        System.out.println("\t\t| d-Speed Wash    |  a. 2kg == 30 Mins | b. 3kg == 40 Mins                     |");
        System.out.println("\t\t|                 |       (Cloths weight cannot more than 3kg)                 |");
        System.out.println("\t\t  -----------------------------------------------------------------------------");
        System.out.print("\t\t\n\n                                      Please choose between (1-4) : ");

        min=0;
        d="\n\n\t\t\tdone\n\n";
        message="\n\n\t\t\tStep 1 : Washing......\n\n";
        rinse="\n\n\t\t\tStep 2 : Rinsing......\n\n";
        spin="\n\n\t\t\tStep 3 : Spining......\n\n";
        comp="\n\n\t\t\tyour laundry is now complete\n\n\t\t\tminutes taken for laundry to complete is : " ;
        satu="Normal Wash";
        dua="Hard Wash";
        tiga="Delicate Wash";
        empat="Speed Wash";
        weightrange ="  Please choose your cloth weight range";

        x = in.nextInt();
        if (x == 1)
        {
            System.out.println("\n\n\t\t\t\t\t" + satu + " has been Chosen." + "\n" +minus);
            System.out.print("\t\t\t" + weightrange + " (2kg/3kg/5kg) : ");

            min=in.nextInt();
            switch (min)
            {
                case 2:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=30;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 3:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=40;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 5:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=50;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                default:
                    System.out.println("\n"+minus);
                    System.out.print("\n\n\t\t\t\t\t\tWrong Input ");

            }
        }
        else if (x == 2)
        {
            System.out.println("\n\n\t\t\t\t\t" + dua + " has been Chosen." + "\n" +minus);
            System.out.print("\t\t\t" + weightrange + " (2kg/3kg/5kg) : ");
            min = in.nextInt();

            switch (min)
            {
                case 2:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=30;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 3:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=50;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 5:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    twentyminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    twentyminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    twentyminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=60;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                default:
                    System.out.println("\n"+minus);
                    System.out.print("\n\n\t\t\t\t\t\tWrong Input ");
                    break;
            }
        }
        else if (x == 3)
        { 
            System.out.println("\n\n\t\t\t\t\t" + tiga + " has been Chosen." + "\n" +minus);
            System.out.print("\t\t\t" + weightrange + " (2kg/3kg/5kg) : ");

            min=in.nextInt();

            switch (min)
            {
                case 2:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=30;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 3:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=40;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 5:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    sixteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=50;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                default:
                    System.out.println("\n"+minus);
                    System.out.print("\n\n\t\t\t\t\t\tWrong Input ");
            }
        }
        else if (x == 4)
        {
            System.out.println("\n\n\t\t\t\t\t" + empat + " has been Chosen." + "\n" +minus);
            System.out.print("\t\t\t" + weightrange + " (2kg/3kg/5kg) : ");
            min=in.nextInt();
            switch (min)
            {
                case 2:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    tenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=30;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                case 3:
                    System.out.println(minus);
                    slowPrint(message, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint1(rinse, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint2(spin, 100);
                    thirteenminutes();
                    slowPrint3(d,100);
                    slowPrint4(comp,100);
                    a=40;
                    System.out.print(a);
                    System.out.println("\n"+minus);
                    break;
                default:
                    System.out.println("\n"+minus);
                    System.out.print("\n\n\t\t\t\t\t\tWrong Input ");
            }
        }


        else
        {
            System.out.println("\n"+minus);
            System.out.print("\n\n\t\t\t\t\t\tWrong Input ");
        }
    }

    static void tenminutes()
    {
        for ( int i = 0; i <= 10; i++ )
        {
            System.out.println("\t\t\t"+ i + " minutes ");
        }
    }

    static void thirteenminutes()
    {
        for ( int i = 0; i <= 13; i++ )
        {
            System.out.println("\t\t\t"+ i + " minutes ");
        }
    }

    static void sixteenminutes()
    {
        for ( int i = 0; i <= 16; i++ )
        {
            System.out.println("\t\t\t"+ i + " minutes ");
        }
    }


    static void twentyminutes()
    {
        for ( int i = 0; i <= 20; i++ )
        {
            System.out.println("\t\t\t"+ i + " minutes ");
        }
    }

    /**
     * Function to print each character in a string with a delay (a "typewriter" effect)
     * @param message The string to print
     * @param millisPerChar Milliseconds to take to print each character
     */
    public static void slowPrint(String message, long millisPerChar)
    {
        for (int i = 0; i < message.length(); i++)
        {
            System.out.print(message.charAt(i));
            try
            {
                Thread.sleep(millisPerChar);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
    /**
     * Function to print each character in a string with a delay (a "typewriter" effect)
     * @param String The string to print
     * @param millisPerChar Milliseconds to take to print each character
     */
    public static void slowPrint1(String rinse, long millisPerChar)
    {
        for (int i = 0; i < rinse.length(); i++)
        {
            System.out.print(rinse.charAt(i));

            try
            {
                Thread.sleep(millisPerChar);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }

    }
    /**
     * Function to print each character in a string with a delay (a "typewriter" effect)
     * @param spin The string to print
     * @param millisPerChar Milliseconds to take to print each character
     */
    public static void slowPrint2(String spin, long millisPerChar)
    {
        for (int i = 0; i < spin.length(); i++)
        {
            System.out.print(spin.charAt(i));

            try
            {
                Thread.sleep(millisPerChar);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
    public static void slowPrint3(String d, long millisPerChar)
    {
        for (int i = 0; i < d.length(); i++)
        {
            System.out.print(d.charAt(i));

            try
            {
                Thread.sleep(millisPerChar);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }

    }
    public static void slowPrint4(String comp, long millisPerChar)
    {
        for (int i = 0; i < comp.length(); i++)
        {
            System.out.print(comp.charAt(i));

            try
            {
                Thread.sleep(millisPerChar);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
}
有人能帮我在布料重量范围内应用NumberFormatException吗?如果用户不满足输入要求,它将循环,我还需要将字符串转换为原始数据。 我已经试过很多次了,但还是做不到。提前感谢您的帮助。
ps/对不起,我的英语不好。

注意:您的代码太长,我没有读

我有点明白你的意思。您希望不断向用户请求输入,直到输入有效。我希望我理解正确

一种方法是,正如您所说,使用NumberFormatException:

但是,不建议使用异常作为控制执行的方法,因为引发异常需要很多时间

检查输入是否有效的另一种方法是使用正则表达式:

final Pattern pattern = Pattern.compile(<<Regular Expression Here>>);
int userInput;
String userString;
Scanner scan = new Scanner(System.in);
while(true) {
    userString = scan.nextLine();
    if (pattern.matcher(userString).matches()) {
        break;
    } else {
        System.out.println("Input invalid. Try again!");
    }
}
userInput = Integer.parseInt(userString);

看到那个东西了吗?如果希望用户输入无符号整数,请将其替换为\\d+。如果希望用户输入有符号整数,请将其替换为[\+-]?\\d+。

请尝试此操作。它能按你的要求工作。它接受有效的输入1、2、3,并将其余内容视为垃圾。它会询问用户,直到您给出介于1和3之间的输入

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter Number bwn 1 & 3: ");
    boolean isRequired = false;
   int num1 = 0;
    do {
        while (!sc.hasNextInt()) {
            System.out.println("Retry again with number bwn 1 & 3");
            sc.next();
        }
        num1 = sc.nextInt();
        if(!(num1<4 && num1>0))
        System.out.println("Retry again with number bwn 1 & 3");
    }while (num1 >3 || num1 <=0);
    System.out.println( "The correct choice of the number is " + num1);
}

你尝试了什么,到底出了什么问题?请看欢迎来到Stackoverflow顺便说一句!尝试使用numberexceptionhandling,并将字符串更改为原始数据类型。没什么问题,我只想使用numberexception处理并将字符串更改为integer之类的基本数据。是否要在某个地方引发异常?那就做吧。。。将字符串转换为int?着手我们能帮你做些什么?你读过链接吗?我已经读过了,但是我失败了,我已经读过了链接,做过一些,但是仍然失败了。我完全理解你的代码,它工作得很好,但问题是我需要的输入是2,3和5。它不在1-3之间。顺便说一下,我之所以需要使用numberformatexception并将字符串转换为原始数据,是因为这是我为我的项目分配的任务,如果我不同时使用这两个选项,我的分数将被扣除。我尝试过使用你的代码,但仍然失败,可能是因为我不知道将你的代码放在哪里,也许你能帮我把代码附加到哪里。顺便说一句,我之所以需要使用numberformatexception并将字符串转换为原始数据,是因为这是我为我的项目分配的任务,如果我不同时使用这两个选项,我的分数将被扣除。只需用我的代码替换获得用户输入的代码@Ikhwansalihin这就是我如何实现你的代码显然这是由前一行的nextInt调用引起的。只需将所有in.nextInt调用更改为Integer.parseIntin.nextLine@ikhwansalihin感谢清扫者!现在我需要解决的是将字符串转换为原始数据。任何细绳都可以。
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter Number bwn 1 & 3: ");
    boolean isRequired = false;
   int num1 = 0;
    do {
        while (!sc.hasNextInt()) {
            System.out.println("Retry again with number bwn 1 & 3");
            sc.next();
        }
        num1 = sc.nextInt();
        if(!(num1<4 && num1>0))
        System.out.println("Retry again with number bwn 1 & 3");
    }while (num1 >3 || num1 <=0);
    System.out.println( "The correct choice of the number is " + num1);
}