是在范围内最后一行代码不能执行的原因



包第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;}