我正在尝试创建一段代码;
如果给定一个int n,则返回true,该值为100或200中的10。
import java.util.Scanner;
class nearHundred{
public boolean nearHundred(int n){
Scanner input = new Scanner(System.in);
n = input.nextInt();
if(10>=Math.abs(100-n) || 10>=Math.abs(200-n)){
return true;
}
return false;
}
}
我哪里出错?
答案 0 :(得分:0)
从评论中看起来你的主要方法是错位的,无论它在哪里,我希望它只在项目中存在一次。从main()方法调用您的类,例如 -
new nearHundred().nearHundred(100); // a call from main method
现在来看你的代码,有几件事需要纠正。您的方法不应该关注Scanner,它的工作是接受输入并检查逻辑。
例如;
public class Utils {
public static boolean isNearToHundered(int num) {
return Math.abs(num-100)<=10 || Math.abs(num-200)<=10;
}
}
负责解析输入的main方法,这是它应该如何工作的。
现在,因为我创建了方法static
,您可以像
Utils.isNearToHundred(105); // TRUE
答案 1 :(得分:-1)
以下是该方法的外观:
public void mainMethod() {
Scanner input=new Scanner(System.in);
int val=input.nextInt();
boolean nearHundredBoolean=nearHundred(val);
//do something with nearHundredBoolean....
//Same logic, but passes the input to the method nearHundred
public boolean nearHundred(int n) {
if(Math.abs(100-n)<=10 || Math.abs(200-n)<=10)
return true;
else return false;
}
您应该将扫描仪输入的值传递给此方法的参数要求,而不是在当前方法中不使用参数n。如果出现问题,可能是由于&quot; input.nextInt()&#39;覆盖参数n的值的方法。