【问题标题】:Java True If Last Numbers Are 0如果最后一个数字是 0,Java 真
【发布时间】:2015-05-06 14:29:29
【问题描述】:

我正在尝试制作一个允许用户输入任意数量的数字的 java 程序。如果他们输入 0,程序会说树是假的。我让它工作,但我想要它,所以如果输入的最后两个数字是 0,程序将打印 true。 0代表空

例如,如果他们输入 5 个数字:

2 4 5 0 0 = 真

2 0 5 0 0 = 假

2 4 5 6 7 = 真

所有其他的东西都令人困惑,所以我简化了它

    System.out.println("Enter a number or enter 0 to represent null: ");
    for(int i=0;i<num;i++)
    {
        arr[i] = input.nextInt();
        if(arr[i] == 0)
        {
            isTree = false;
        }
    }

    System.out.println("Is this a tree: " + isTree);

【问题讨论】:

  • 请详细解释零的含义。您的前两个示例之间的行为差​​异尚不清楚。你说的树是假的是什么意思?
  • @Sasha Binary search Tree 我猜

标签: java arrays loops input


【解决方案1】:

您可以使用正则表达式 "[1-9]+0{2}" => 1 到 9 之间的一个或多个数字,并以 2 个零结束。

代码示例:

System.out.println("Enter a number or enter 0 to represent null: ");
java.util.regex.Pattern pattern = Pattern.compile("[1-9]+0{2}");
java.util.regex.Matcher matcher = pattern.matcher("20500");
boolean isTree = false;
while(matcher.find()) {
    isTree = true;
}
System.out.println("Is this a tree: " + isTree);

你可以试试这个工具来测试你的正则表达式:https://www.debuggex.com/

【讨论】:

    【解决方案2】:

    做你正在做的事,但也要检查最后是否有两个零:

    System.out.println("Enter a number or enter 0 to represent null: ");
    for(int i=0;i<num;i++)
    {
        arr[i] = input.nextInt();
        if(arr[i] == 0 && i < arr.length-2) //ignore if last two nodes
        {
            isTree = false;
        }
    }
    boolean isTree2 = (arr[arr.length-1] == 0 && arr[arr.length-2] == 0)
                   || (arr[arr.length-1] != 0 && arr[arr.length-2] != 0);
    System.out.println("Is this a tree: " + (isTree && isTree2));
    

    【讨论】:

    • 我这样做了,但是当用户输入 2 4 5 0 0 时,它仍然打印出 false
    【解决方案3】:

    我想你希望如果最后两位数为零,那么你的程序会说它是真的。

    int length = arr.length;
    boolean isTree = false;
    if(length >= 2) {
        if(arr[length-1] == 0 && arr[length-2] == 0) {
            isTree = true;
        }
    }
    System.out.println(isTrue);
    

    【讨论】:

      【解决方案4】:
         System.out.println("Enter a number or enter 0 to represent null: ");
         boolean cond = false;
          for(int i=0;i<num;i++){
              arr[i] = input.nextInt();
              if(arr[i] == 0){
                  cond = true;
              }
              if(arr[i] !=0 && cond){
                  isTree = true;
                   break;
              }
          }
      
          System.out.println("Is this a tree: " + isTree);
      

      【讨论】:

        【解决方案5】:

        当您输入输入时,我不会费心检查,而是在完成所有输入后检查。我会将您的所有输入连接成一个字符串,然后评估该字符串以确定它是否满足您的树条件。

        public static void main(String[] args) throws Exception {
            int num = 5;
            int[] arr = new int[num];
        
            System.out.println("Enter a number or enter 0 to represent null: ");
            for (int count = 0; count < 5; count++) {
                for (int i = 0; i < num; i++) {
                    arr[i] = input.nextInt();
                }
        
                // Arrays.toString(arr) results in [2, 4, 5, 0, 0]
                // Remove all brackets, commas, and spaces
                String inputs = Arrays.toString(arr).replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(", ", "");
        
                boolean isTree = true;
                // Only have to check for ending 00 if you know a 0 is in your inputs
                if (inputs.contains("0")) {
                    isTree = inputs.endsWith("00") && !inputs.substring(0, inputs.length() - 2).contains("0");
                }
        
                System.out.println("Is this a tree: " + isTree);
                System.out.println("");
            }
        }
        

        结果:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-07-10
          • 1970-01-01
          • 1970-01-01
          • 2021-12-24
          • 2013-03-24
          • 1970-01-01
          • 2019-03-13
          相关资源
          最近更新 更多