原题如下
编写程序,读入double型数并检验该数是否在1~1000.使用Myinput类的MyInput.readDouble()方法获取输入的数 如果在其范围内 则显示用boolean类型显示true 否则显示false
public class Estimate
{
public static void main(String[] args)
{
A myA=new A();
System.out.println("请输入数字:");
System.out.println(myA.Compare());
}
class A
{
double i;
boolean b;
boolean Compare(boolean b)
{
i=MyInput.readDouble();
if(i <1000.0&&i>1.0)
b=true;
else
b=false;}
System.out.println(b);
}
}
这是我用面向对象的思想又重新编了下 逻辑有点乱 但又不知道怎么改清晰了...
[code="java"]
public class Estimate {
public static void main(String[] args) {
System.out.println("请输入数字:");
double in = MyInput.readDouble(); // 在这里而不是在compare里面,获取与处理要分开.
double upperlimit = 1000d;
double lowerlimit = 0d;
System.out.println(Comparator.Compare(in, upperlimit, lowerlimit));
}
}
class Comparator { // 不要动手就A,A有意义吗?
//定义这样的Compare是为了方便以后范围变化时调用.
static boolean Compare(double value, double upperlimit, double lowerlimit) { // 这种自给自足的工具方法,适合使用static修饰.方便调用
boolean b = false; // /如果需要,变量尽可能的收起来减少暴露,也就减少被误用的危险.申明变量就初始化,是个好习惯.
if (value < upperlimit && value > lowerlimit) {
b = true;
} else {
b = false;
}
System.out.println(b);
return b;
}
}
[/code]
简单修改下,希望对LZ有启发!
System.out.println(myA.[color=red]Compare()); [/color]
boolean [color=red]Compare(boolean b) [/color]
方法定义就出错了
减少了变量的定义,静态化了方法
[color=red]public class CheckDouble {
public static boolean check(double val){
if(val>1&&val<1000){
return true;
}else{
return false;
}
}
}[/color]