包第7周;
导入java.util.Scanner;公共类IsBetween{
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
int num3 = 0;
boolean valid = true;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter the low number:");
num1 = sc.nextInt();
System.out.print("Please enter the number to be tested (the between number):");
num2 = sc.nextInt();
System.out.print("Please enter the high number:");
num3 = sc.nextInt();
}
public static boolean inrange(int num1,int num2,int num3) {
boolean inrange = false;
if (num2 < num1 );
if (num2 > num3);
return inrange;
最后的代码为什么不执行?
从不调用inrange方法。
声明一个方法和使用它是有区别的
在您的情况下,您声明了一个方法inrange,该方法目前总是返回false,但我认为稍后您计划让它进行比较。
你必须实际调用它才能使用它。在之后
num3 = sc.nextInt();
你可以添加
boolean result = inrange(num1, num2, num3);
所以我认为你错了,认为用num1、num2、num3作为变量的名称来声明inrange会创建一个链接。事实并非如此。你实际上可以用不同的名字命名它们
public static boolean inrange(int first, int second, int third) {
// implementation goes here
return false;
}
并用呼叫他们
num3 = sc.nextInt();
inrange(num1, num2, num3);
num1将首先放入变量,num2将第二次放入变量。
inrange的参数名称仅在inrange方法的持续时间内很重要。它们被创建为小容器,您可以在其中转储要使用的值,并且在inrange方法的{}内它们是可用的,但在方法外它们将不可见。因此,实际上可以让多个方法使用相同的变量名,但它们不会相互重叠/妨碍。
public static int add3(int number) {
return number + 3;
}
public static int sub3(int number) {
return number - 3;
}
int age = 5;
// when you call these:
System.out.println(add3(age)); // prints 8
System.out.println(sub3(age)); // prints 2
在刚开始学习时,将变量视为放入值的框可能很容易。当您调用一个方法时,您将age bucket(包含5(的内容放入add3方法的"number"bucket中。然后你启动机器。类似地,当您调用sub3方法(它是完全独立的(时,您将bucket的值(仍然是5(转储到sub3的数字bucket中。
bucket上的任何标签都只在它们所附加的{}内部起作用。在inrange的情况下,它是inrange方法块。对于main中的变量,它是main方法块。
除了不调用inrange
之外,它的实现是不正确的。
public static boolean inrange(int num1,int num2,int num3) {
boolean inrange = false;
if (num2 < num1 );
if (num2 > num3);
return inrange;
}
if
语句不执行任何操作,因为它们不包含语句。
可以编写if语句:
if (x == 1)
System.out.println("true");
所以if语句的主体是一个单独的语句。
这是而不是与相同
if (x == 1);
System.out.println("true");
其中,额外的;
为if语句提供了一个空正文。在这种情况下,将始终执行println。
因为这可能很难纠正,所以你应该总是写一个if语句(或while、for等(,其中包含一个body块:
if (x == 1) {
System.out.println("true");
}
您写错了代码,正确的实现是:
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
int num3 = 0;
boolean valid = true;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter the low number:");
num1 = sc.nextInt();
System.out.print("Please enter the number to be tested (the between number):");
num2 = sc.nextInt();
System.out.print("Please enter the high number:");
num3 = sc.nextInt();
System.out.println(inrange(num1,num2,num3);}
public static boolean inrange(int num1,int num2,int num3) {
if (num2 > num1 && num2 < num3);
return true;
return false;}