Javagony/其他条件和循环
外观
< Javagony
我们知道如何在 Javagony 中编写比较两个数字的条件。如果我们想要检查其他条件呢?好吧,这可以通过使用布尔变量和函数 Boolean.compare(b1,true) 来完成,其中 b1 是存储条件结果(true 或 false)的变量。如果布尔变量为 true,则返回 0,如果为 false,则返回 -1。因为我们已经知道如何在 Javagony 中检查一个数字是否为 0,这意味着我们可以检查任何条件。
public class More
{
public static void main(String[] args)
{
boolean b1=7.5/5>1; //replace with another condition
try
{
int temp=Boolean.compare(b1,true);
temp=1/temp;
System.out.println("Condition is false");
}
catch(Exception IO)
{
System.out.println("Condition is true");
}
}
}
现在我们知道如何检查任何条件是否为真,在 Javagony 中实现 do/while 循环的替代方案很容易。我们所需要做的就是创建一个执行某些操作的函数,然后在满足特定条件时调用自身。
为了本书的目的,我们将编写一段代码,打印所有 3 的幂,直到我们到达一个其最低有效位为 7 的数字。它将打印的最后一个数字将是 27。
public class More
{
public static void main(String[] args)
{
loop(1);
}
public static void loop(int n)
{
System.out.println(n);
boolean b1=n%10==7;
try
{
int temp=Boolean.compare(b1,true);
temp=1/temp;
loop(n*3);
}
catch(Exception IO)
{
}
}
}
While 循环的工作原理类似于 do/while,只是这次我们在函数开始时检查条件,而不是在函数结束时。如果满足条件,我们将执行代码。如果不是,我们将使用 return 语句退出函数。在函数结束时,在执行代码后,它将无条件地调用自身。
让我们利用这些知识编写一段代码,接收一个正整数,并打印该数字的所有数字 - 从最低有效位开始,以最高有效位结束。
public class More
{
public static void main(String[] args)
{
loop(1234567890);
}
public static void loop(int n)
{
boolean b1=n<1;
try
{
int temp=Boolean.compare(b1,true);
temp=1/temp;
}
catch(Exception IO)
{
return;
}
System.out.println(n%10);
loop(n/10);
}
}
如果我们想要函数返回最高有效位呢?好吧,我们可以轻松地修改这段代码来做到这一点。
public class More
{
public static void main(String[] args)
{
System.out.println(loop(45454365));
}
public static int loop(int n)
{
boolean b1=n<10;
try
{
int temp=Boolean.compare(b1,true);
temp=1/temp;
}
catch(Exception IO)
{
return n;
}
return loop(n/10);
}
}
让我们修改这段代码,返回一个 ArrayList,其中包含该数字的所有数字,从最高有效位开始,以最低有效位结束。
import java.util.ArrayList;
public class More
{
public static void main(String[] args)
{
System.out.println(loop(3874897));
}
public static ArrayList<Integer> loop(int n)
{
boolean b1=n<10;
try
{
int temp=Boolean.compare(b1,true);
temp=1/temp;
}
catch(Exception IO)
{
ArrayList<Integer> a=new ArrayList<Integer>();
a.add(n);
return a;
}
ArrayList<Integer> a=loop(n/10);
a.add(n%10);
return a;
}
}