Java:接受字符串或int形式的输入

Java:接受字符串或int形式的输入,java,class,java.util.scanner,Java,Class,Java.util.scanner,我正在尝试制作一个简单的偶数或奇数程序。我希望它一直运行,直到用户输入'q'。但是我很难接受“q”作为字符串 import java.util.Scanner; class EvenOrOdd { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println("Welcome to my program t

我正在尝试制作一个简单的偶数或奇数程序。我希望它一直运行,直到用户输入'q'。但是我很难接受“q”作为字符串

import java.util.Scanner;

class EvenOrOdd {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.println();
            System.out.print("Please type number in a number ['q' to quit]: ");

            int number;
            String quit;
            try {
                number = myScanner.nextInt();
            } finally {
                quit = myScanner.nextLine();
            }

            if (quit.equals("q")) {
                break;
            } else if (number % 2 == 0) {
                System.out.println(number + " is Even.");
            } else {
                System.out.println(number + " is Odd.");
            }
        }
    }
}
当我输入数字时,程序运行正常,但当我输入“q”时,控制台会抛出一个错误:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at EvenOrOdd.main(EvenOrOdd.java:19)

我知道这对你们中的许多人来说可能很容易,但我刚刚拿起一本java书,正在努力完成这项任务。任何帮助都将不胜感激

不要使用
myScanner.nextInt()
,只需使用
myScanner.next()
获取
字符串即可。然后,如果它不是“q”,则使用
Integer.valueOf(inputString)
获取
int
,并检查它是否为偶数/奇数

while (true) {
    String input = myScanner.next();
    if ("q".equals(input)) {
        break;
    } else {
        int number = Integer.valueOf(input);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

不要使用
myScanner.nextInt()
,只需使用
myScanner.next()
获取
字符串即可。然后,如果它不是“q”,则使用
Integer.valueOf(inputString)
获取
int
,并检查它是否为偶数/奇数

while (true) {
    String input = myScanner.next();
    if ("q".equals(input)) {
        break;
    } else {
        int number = Integer.valueOf(input);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

不要使用
myScanner.nextInt()
,只需使用
myScanner.next()
获取
字符串即可。然后,如果它不是“q”,则使用
Integer.valueOf(inputString)
获取
int
,并检查它是否为偶数/奇数

while (true) {
    String input = myScanner.next();
    if ("q".equals(input)) {
        break;
    } else {
        int number = Integer.valueOf(input);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

不要使用
myScanner.nextInt()
,只需使用
myScanner.next()
获取
字符串即可。然后,如果它不是“q”,则使用
Integer.valueOf(inputString)
获取
int
,并检查它是否为偶数/奇数

while (true) {
    String input = myScanner.next();
    if ("q".equals(input)) {
        break;
    } else {
        int number = Integer.valueOf(input);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

从扫描器中取出一个字符串,检查是否为“q”,如果不是,将其转换为int,然后检查偶数或奇数

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    while (true) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String inText = myScanner.next();

        if (inText.equals("q")){
            break;
        }
        int number = Integer.valueOf(inText);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

从扫描器中取出一个字符串,检查是否为“q”,如果不是,将其转换为int,然后检查偶数或奇数

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    while (true) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String inText = myScanner.next();

        if (inText.equals("q")){
            break;
        }
        int number = Integer.valueOf(inText);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

从扫描器中取出一个字符串,检查是否为“q”,如果不是,将其转换为int,然后检查偶数或奇数

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    while (true) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String inText = myScanner.next();

        if (inText.equals("q")){
            break;
        }
        int number = Integer.valueOf(inText);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

从扫描器中取出一个字符串,检查是否为“q”,如果不是,将其转换为int,然后检查偶数或奇数

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    while (true) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String inText = myScanner.next();

        if (inText.equals("q")){
            break;
        }
        int number = Integer.valueOf(inText);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    }
}

你可以这样做,我发现在这种情况下,布尔值比while(true)和break更适合循环:

public class EvenOrOdd {
public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out
            .println("Welcome to my program that checks if a number is even or odd.");
    boolean enterLoop = true;
    while (enterLoop) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String scannerinput = myScanner.nextLine();
        if (scannerinput.equals("q")) {
            enterLoop = false;
        } else {
            checkNumber(scannerinput);
        }

    }
}

private static void checkNumber(String scannerinput) {
    try {
        int number = Integer.parseInt(scannerinput);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    } catch (Exception e) {
        System.out.println("No Number!");
    }
}

}

你可以这样做,我发现在这种情况下,布尔值比while(true)和break更适合循环:

public class EvenOrOdd {
public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out
            .println("Welcome to my program that checks if a number is even or odd.");
    boolean enterLoop = true;
    while (enterLoop) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String scannerinput = myScanner.nextLine();
        if (scannerinput.equals("q")) {
            enterLoop = false;
        } else {
            checkNumber(scannerinput);
        }

    }
}

private static void checkNumber(String scannerinput) {
    try {
        int number = Integer.parseInt(scannerinput);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    } catch (Exception e) {
        System.out.println("No Number!");
    }
}

}

你可以这样做,我发现在这种情况下,布尔值比while(true)和break更适合循环:

public class EvenOrOdd {
public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out
            .println("Welcome to my program that checks if a number is even or odd.");
    boolean enterLoop = true;
    while (enterLoop) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String scannerinput = myScanner.nextLine();
        if (scannerinput.equals("q")) {
            enterLoop = false;
        } else {
            checkNumber(scannerinput);
        }

    }
}

private static void checkNumber(String scannerinput) {
    try {
        int number = Integer.parseInt(scannerinput);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    } catch (Exception e) {
        System.out.println("No Number!");
    }
}

}

你可以这样做,我发现在这种情况下,布尔值比while(true)和break更适合循环:

public class EvenOrOdd {
public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out
            .println("Welcome to my program that checks if a number is even or odd.");
    boolean enterLoop = true;
    while (enterLoop) {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        String scannerinput = myScanner.nextLine();
        if (scannerinput.equals("q")) {
            enterLoop = false;
        } else {
            checkNumber(scannerinput);
        }

    }
}

private static void checkNumber(String scannerinput) {
    try {
        int number = Integer.parseInt(scannerinput);
        if (number % 2 == 0) {
            System.out.println(number + " is Even.");
        } else {
            System.out.println(number + " is Odd.");
        }
    } catch (Exception e) {
        System.out.println("No Number!");
    }
}

}这是因为程序需要int类型的输入,基本上程序输出:请在数字中键入数字['q'以退出],然后它将到达
myScanner.nextInt()行并将等待输入,由于“q”不是整数,它将引发异常

一个快速的解决方案是使用myScanner.nextLine()
,然后将字符串转换为整数,除非它等于“q”。大概是这样的:

import java.util.Scanner;

public class EvenOrOdd {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.println();
            System.out.print("Please type number in a number ['q' to quit]: ");

            String string = myScanner.nextLine();
            int number = 0;

            if (string.equals("q")) {
                myScanner.close(); // Close the scanner.
                break;
            } else if ((number = toInteger(string)) == -1){  // Is the string a number, less than Integer.MAX_VALUE and greater than Integer.MIN_VALUE?
                System.out.printf("%s is not a valid integer!%n",string);
            } else if (number % 2 == 0) {
                System.out.println(number + " is Even.");
            } else {
                System.out.println(number + " is Odd.");
            }
        }
    }

    private static int toInteger(String str){
        try{
            return Math.abs(Integer.parseInt(str));
        }catch(NumberFormatException e){
            return -1;
        }
    }
}

顺便说一下,请始终关闭扫描仪,否则可能会发生资源泄漏。

这是因为程序需要int类型的输入,基本上是程序输出:请在数字中键入数字['q'退出],然后它将到达
myScanner.nextInt()行并将等待输入,由于“q”不是整数,它将引发异常

import java.util.Scanner;

class EvenOrOdd {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.print("\nPlease type number in a number ['q' to quit]: ");
            String input = scanner.next();
            if (input.equals("q")) {
                break;
            } else {
                int number = Integer.parseInt(input);
                System.out.print(number + " is ");
                System.out.print(number%2 == 0 ? "Even." : "Odd.");
            }
        }
    }
}
一个快速的解决方案是使用myScanner.nextLine()
,然后将字符串转换为整数,除非它等于“q”。大概是这样的:

import java.util.Scanner;

public class EvenOrOdd {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.println();
            System.out.print("Please type number in a number ['q' to quit]: ");

            String string = myScanner.nextLine();
            int number = 0;

            if (string.equals("q")) {
                myScanner.close(); // Close the scanner.
                break;
            } else if ((number = toInteger(string)) == -1){  // Is the string a number, less than Integer.MAX_VALUE and greater than Integer.MIN_VALUE?
                System.out.printf("%s is not a valid integer!%n",string);
            } else if (number % 2 == 0) {
                System.out.println(number + " is Even.");
            } else {
                System.out.println(number + " is Odd.");
            }
        }
    }

    private static int toInteger(String str){
        try{
            return Math.abs(Integer.parseInt(str));
        }catch(NumberFormatException e){
            return -1;
        }
    }
}

顺便说一下,请始终关闭扫描仪,否则可能会发生资源泄漏。

这是因为程序需要int类型的输入,基本上是程序输出:请在数字中键入数字['q'退出],然后它将到达
myScanner.nextInt()行并将等待输入,由于“q”不是整数,它将引发异常

import java.util.Scanner;

class EvenOrOdd {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.print("\nPlease type number in a number ['q' to quit]: ");
            String input = scanner.next();
            if (input.equals("q")) {
                break;
            } else {
                int number = Integer.parseInt(input);
                System.out.print(number + " is ");
                System.out.print(number%2 == 0 ? "Even." : "Odd.");
            }
        }
    }
}
一个快速的解决方案是使用myScanner.nextLine()
,然后将字符串转换为整数,除非它等于“q”。大概是这样的:

import java.util.Scanner;

public class EvenOrOdd {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.println();
            System.out.print("Please type number in a number ['q' to quit]: ");

            String string = myScanner.nextLine();
            int number = 0;

            if (string.equals("q")) {
                myScanner.close(); // Close the scanner.
                break;
            } else if ((number = toInteger(string)) == -1){  // Is the string a number, less than Integer.MAX_VALUE and greater than Integer.MIN_VALUE?
                System.out.printf("%s is not a valid integer!%n",string);
            } else if (number % 2 == 0) {
                System.out.println(number + " is Even.");
            } else {
                System.out.println(number + " is Odd.");
            }
        }
    }

    private static int toInteger(String str){
        try{
            return Math.abs(Integer.parseInt(str));
        }catch(NumberFormatException e){
            return -1;
        }
    }
}

顺便说一下,请始终关闭扫描仪,否则可能会发生资源泄漏。

这是因为程序需要int类型的输入,基本上是程序输出:请在数字中键入数字['q'退出],然后它将到达
myScanner.nextInt()行并将等待输入,由于“q”不是整数,它将引发异常

import java.util.Scanner;

class EvenOrOdd {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.print("\nPlease type number in a number ['q' to quit]: ");
            String input = scanner.next();
            if (input.equals("q")) {
                break;
            } else {
                int number = Integer.parseInt(input);
                System.out.print(number + " is ");
                System.out.print(number%2 == 0 ? "Even." : "Odd.");
            }
        }
    }
}
一个快速的解决方案是使用myScanner.nextLine()
,然后将字符串转换为整数,除非它等于“q”。大概是这样的:

import java.util.Scanner;

public class EvenOrOdd {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.println();
            System.out.print("Please type number in a number ['q' to quit]: ");

            String string = myScanner.nextLine();
            int number = 0;

            if (string.equals("q")) {
                myScanner.close(); // Close the scanner.
                break;
            } else if ((number = toInteger(string)) == -1){  // Is the string a number, less than Integer.MAX_VALUE and greater than Integer.MIN_VALUE?
                System.out.printf("%s is not a valid integer!%n",string);
            } else if (number % 2 == 0) {
                System.out.println(number + " is Even.");
            } else {
                System.out.println(number + " is Odd.");
            }
        }
    }

    private static int toInteger(String str){
        try{
            return Math.abs(Integer.parseInt(str));
        }catch(NumberFormatException e){
            return -1;
        }
    }
}
顺便说一下,请始终关闭扫描仪,否则可能会发生资源泄漏

import java.util.Scanner;

class EvenOrOdd {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Welcome to my program that checks if a number is even or odd.");

        while (true) {
            System.out.print("\nPlease type number in a number ['q' to quit]: ");
            String input = scanner.next();
            if (input.equals("q")) {
                break;
            } else {
                int number = Integer.parseInt(input);
                System.out.print(number + " is ");
                System.out.print(number%2 == 0 ? "Even." : "Odd.");
            }
        }
    }
}
那就行了。:)

那就行了。:)

那就行了。:)


那就行了。:)

试试这种方法。查看代码注释以了解更多详细信息

import java.util.Scanner;

class EvenOrOdd {

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    String input=null;
    int number;
    boolean flag=true;  // loop flag
    do {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        // Take user input as String
        input=myScanner.nextLine();


        try 
        {
            // convert the string value to integer value
            number = Integer.parseInt(input);

            if (number % 2 == 0)
            {
                System.out.println(number + " is Even.");
            }
            else
            {
                System.out.println(number + " is Odd.");
            }
        } 
        catch (NumberFormatException nfe) 
        {
           // control goes here if input is not integer value
            if(input.equals("q"))   // exist option
                flag=false;
            else    // invalid input
                System.out.println("Invalid input, Please enter integer value or (q) to exist");


        }


    } while (flag);

}
}

试试这种方法。查看代码注释以了解更多详细信息

import java.util.Scanner;

class EvenOrOdd {

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    String input=null;
    int number;
    boolean flag=true;  // loop flag
    do {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        // Take user input as String
        input=myScanner.nextLine();


        try 
        {
            // convert the string value to integer value
            number = Integer.parseInt(input);

            if (number % 2 == 0)
            {
                System.out.println(number + " is Even.");
            }
            else
            {
                System.out.println(number + " is Odd.");
            }
        } 
        catch (NumberFormatException nfe) 
        {
           // control goes here if input is not integer value
            if(input.equals("q"))   // exist option
                flag=false;
            else    // invalid input
                System.out.println("Invalid input, Please enter integer value or (q) to exist");


        }


    } while (flag);

}
}

试试这种方法。查看代码注释以了解更多详细信息

import java.util.Scanner;

class EvenOrOdd {

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    String input=null;
    int number;
    boolean flag=true;  // loop flag
    do {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        // Take user input as String
        input=myScanner.nextLine();


        try 
        {
            // convert the string value to integer value
            number = Integer.parseInt(input);

            if (number % 2 == 0)
            {
                System.out.println(number + " is Even.");
            }
            else
            {
                System.out.println(number + " is Odd.");
            }
        } 
        catch (NumberFormatException nfe) 
        {
           // control goes here if input is not integer value
            if(input.equals("q"))   // exist option
                flag=false;
            else    // invalid input
                System.out.println("Invalid input, Please enter integer value or (q) to exist");


        }


    } while (flag);

}
}

试试这种方法。查看代码注释以了解更多详细信息

import java.util.Scanner;

class EvenOrOdd {

public static void main(String[] args) {
    Scanner myScanner = new Scanner(System.in);

    System.out.println("Welcome to my program that checks if a number is even or odd.");

    String input=null;
    int number;
    boolean flag=true;  // loop flag
    do {
        System.out.println();
        System.out.print("Please type number in a number ['q' to quit]: ");

        // Take user input as String
        input=myScanner.nextLine();


        try 
        {
            // convert the string value to integer value
            number = Integer.parseInt(input);

            if (number % 2 == 0)
            {
                System.out.println(number + " is Even.");
            }
            else
            {
                System.out.println(number + " is Odd.");
            }
        } 
        catch (NumberFormatException nfe) 
        {
           // control goes here if input is not integer value
            if(input.equals("q"))   // exist option
                flag=false;
            else    // invalid input
                System.out.println("Invalid input, Please enter integer value or (q) to exist");


        }


    } while (flag);

}
}

您应该更新您的方法流,实际上您正在尝试通过字符串的and intger验证,因此首先将输入作为
string
并检查它是否是退出字符q,如果不是,则尝试使用
Integer.parseInt(输入)将字符串解析为and
int
原语
并测试它是奇数还是偶数。 如果进程失败,假设它既不是一个q也不是一个数字(任何其他字符),则会提示用户使用一个有效数字或“q”退出:


您应该更新您的方法流,实际上您正在尝试通过字符串的and intger验证,因此首先将输入作为
string
并检查它是否是退出字符q,如果不是,则尝试使用
Integer.parseInt(输入)将字符串解析为and
int
原语
并测试它是奇数还是偶数。 如果进程失败,则假定它为nei