【问题标题】:Why is my 2nd if statement in Java not working?为什么我在 Java 中的第二个 if 语句不起作用?
【发布时间】:2015-01-27 17:48:53
【问题描述】:

早上好!

我的代码的目标是生成所有可能的三个字符串,包括 A-Z 和 0-9。例如,我想要从 AAA 到 999 的所有可能性。

问题:我自己的代码最多只能输出 A99。我的第二个 if 语句没有生成下一步,这让我很困惑。我需要第二个 if 语句才能工作,以便 A99 中的 A 增加到 BAA 并继续前进。

这是我的代码:

{    
        public static void main(String args[]) {

        String[] AZ09 = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

        while (z < AZ09.length) {
        System.out.println(AZ09[x]+AZ09[y]+AZ09[z]);
        z++;

              if ((AZ09[y]+AZ09[z]).equals("99") {
                   System.out.println(AZ09[x]+AZ09[y]+AZ09[z]);
                   x++;
                   y = 0;
                   z = 0;
              }

              if (AZ09[z].equals("9")) {
                   System.out.println(AZ09[x]+AZ09[y]+AZ09[z]);
                   y++;
                   z = 0;
              }    
        }

解决方案?想法?

请不要重复发布。我尝试了 .equals() 方法,仍然没有骰子

非常感谢!

【问题讨论】:

  • 因为你在比较String和==比较内存地址,所以改用equals方法。
  • 我试过了,还是不行。
  • 这里的逻辑也有问题。您需要交换 if 语句的位置。目前A99 案例将在第二个之前触发第一个。但是,当输出为999 时,您是否还需要一个案例以退出while 循环?
  • 非常感谢!逻辑!!!! :) 现在完全可以用了!!!
  • @RichardFrank 我建议编辑您的问题以显示 .equals() 并在您的编辑完成后标记此问题并说需要删除重复的标签。

标签: java arrays if-statement while-loop iteration


【解决方案1】:

你有几个问题:

  1. 您正在用 == 比较字符串,您需要使用 equals
  2. 在将 z 设置为 0 后检查 az09[z] == 9,因此下一个 IF 永远不会为真

作为建议,您可以采用另一种方式,检查此代码:

public static void main(final String[] args)
{
    final long start = Long.valueOf("999", 36);
    final long end = Long.valueOf("AAA", 36);

    for (long i = start; i <= end; i++)
        System.out.println(Long.toString(i, 36));
}

【讨论】:

    【解决方案2】:

    为什么不试试下面的代码呢? (你的 if 语句删掉了太多可能的输出,这就是为什么你的输出这么小)

    public class Main {
        public static void main(String[] args) 
        {
         String[] array = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
    
         for (int i = 0 ;i<array.length; i++){
             for (int j = i ;j<array.length; j++){
                 for (int k = j ;k<array.length; k++){
                     System.out.println(array[i] + " " + array[j] + " " + array[k]);
                 } 
             } 
         }
    
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多