【发布时间】:2015-06-09 15:27:51
【问题描述】:
我有以下代码使用 get/set 方法验证用户输入。只接受字符串。while 循环应继续执行,直到用户输入正确的数据类型。然而,尽管我的 while 循环继续执行识别不正确的数据类型。建议?
public class SetGet {
public static void main(String[]args)
{
Fraction a=new Fraction();
Scanner sc=new Scanner(System.in);
String name;
boolean type=false;
while(type==false)
{
System.out.println("Enter first name: ");
name=sc.nextLine();
a.setfirstName(name,type);
}
System.out.println("Name: "+a.getfirstName());
}
}
public class Fraction {
private String FirstName;
public void setfirstName(String firstName,boolean type)
{
try
{
Integer.parseInt(firstName);
System.out.println("Invalid "+type);
}
catch(Exception e)
{
try
{
Double.parseDouble(firstName);
System.out.println("Invalid "+type);
}
catch(Exception f)
{
type=true;
this.FirstName=firstName;
System.out.println("Valid "+type);
}
}
}
public String getfirstName()
{
return FirstName;
}
}
【问题讨论】:
-
关于质量的旁注:名称是重要的。只是您将您的字段称为
FirstName...,然后您的验证的全部目的是确保可以将基础字符串解析为 Double number ... 令人困惑。不要那样做。想想你的方法,字段是用来做什么的。然后相应地命名它们。然后:分离关注点。比如:创建一个方法isDouble(String strValue)例如;如果 strValue 是 Double 则返回 true ...然后您的setDoubleValueAsString()将不需要任何额外的验证 ...
标签: java oop boolean encapsulation