首页 > 解决方案 > 如何检测Java输入中有字符串?

问题描述

如果我输入一个字符串hello,程序会运行并说有错误并要求用户再次输入半径,但如果我输入类似Hello World 123的东西会给我错误和计算。如果输入了字符串字符,如何检查输入并使其保持在循环中?

import java.util.Scanner;

public class ComputeArea {
    public static void main(String[] args) {
        double radius; //define radius variable
        double area; //define area variable
        double pie = 3.14159; //define pie as 3.14159
        boolean inputIsAString = false;

        //Import Scanner library to allow user to input value
        System.out.print("Please enter radius to calculate area: ");
        Scanner input = new Scanner(System.in);

        //Is the input a number? If not print error and redirect to input statement
        while (!input.hasNextDouble() && !inputIsAString) {
            System.out.println("");
            System.out.println("*********************************");
            System.out.println("Error Please enter a valid number");
            System.out.println("*********************************");
            System.out.println("");
            System.out.print("Please input radius: ");
            input.next();
            if (input.next().matches("[a-zA-Z]")) {
                System.out.println("user enter string");
                inputIsAString = true;
            } else {
                inputIsAString = false;
            }
        }

        //Calculate the area with the given radius
        radius = input.nextDouble();
        area = radius * radius * pie;

        //Print out the area
        System.out.println("The area of a circle with a radius of " + radius + " is equal to: " + area);
    }
}

标签: java

解决方案


使用如下所示的 do-while 循环。dotake inputwhile使用尚未输入的数字。以下是修改后的代码 -

import java.util.Scanner;

public class CircleRadius {
    public static void main(String[] args) {
        double radius; //define radius variable
        double area; //define area variable
        double pie = 3.14159; //define pie as 3.14159
        boolean inputIsAString = true;
        do{
            System.out.print("Please enter radius to calculate area: ");
            //Import Scanner library to allow user to input value
            Scanner input = new Scanner(System.in);
            //Is the input a number? If not print error and redirect to input statement
            if(input.hasNextDouble()){
                //Calculate the area with the given radius
                radius = input.nextDouble();
                area = radius * radius * pie;
                //Print out the area
                System.out.println("The area of a circle with a radius of " + radius + " is equal to: " + area);
                inputIsAString= false;
            }else{
                System.out.println("");
                System.out.println("*********************************");
                System.out.println("Error Please enter a valid number");
                System.out.println("*********************************");
                System.out.println("");
                inputIsAString= true;
            }
        }while (inputIsAString);
    }
}

推荐阅读