跳转到内容

Javagony/其他条件和循环

来自 Wikibooks,开放的书籍,为开放的世界

其他条件

[编辑 | 编辑源代码]

我们知道如何在 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");
      }
   }
}

Do/while 循环

[编辑 | 编辑源代码]

现在我们知道如何检查任何条件是否为真,在 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 循环

[编辑 | 编辑源代码]

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;
   }
}
华夏公益教科书