java - 如何检测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);
}
}
解决方案
使用如下所示的 do-while 循环。do
take 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);
}
}
推荐阅读
- node.js - 将 jquery 前端连接到 nodejs 后端
- django - 在 Django 中,如何使用接收器替换模型的图像?
- python - 如何将整行与熊猫中的特定语句合并?
- cordova - 电容视频播放器插件崩溃安卓应用
- postgresql - PostgreSQL 11.0 中多行列的条件拆分
- linux - 管道切割命令未按预期工作
- javascript - 如何在网页中运行 Python 代码段?
- python-3.x - 如何从 Python 中的字符串中提取时间
- centos - 在 Hyper V 上与 CentOS 交互,同时连接到 VPN
- javascript - 我如何通过反应路由器将道具传递给另一个组件?