【问题标题】:Outputting value of a For-Loop on last iteration only仅在最后一次迭代时输出 For-Loop 的值
【发布时间】:2013-08-06 14:50:08
【问题描述】:

我正在尝试为循环 index(i) 输出 i 的值,但仅限于最后一次迭代。我要么得到一个错误,要么它输出i 的所有值。这是我目前所拥有的:

boolean sequentialSearch(int x) {

       for(int i = 0; i < n; i++)  //n comes from function length()

           if(n != 0) {

               if(list[i] == x) {

                   return true;
               }

               return false;
           }
}

【问题讨论】:

  • 你的代码有几个问题,你能解释一下你想要做什么吗?

标签: java if-statement for-loop sequence


【解决方案1】:

试试:

for(int i = 0; i < n; ++i) {
    if(list[i] == x) { // an array is 0-indexed
        System.out.println("Found at index: " + i);
        return true;   // return true if found
    }
}
System.out.println("Not found!");
return false;      // here, x has never been found, so return false

【讨论】:

  • 我也想输出 i,到目前为止,你的和我上面的完全一样
  • 我编辑了我的答案。如果您希望代码返回索引,请返回 i 而不是 true-1 而不是 false
【解决方案2】:

我猜你需要这样的东西:

boolean sequentialSearch(int x) {
    for(int i=0;i<n;i++) { //n comes from function length()
        if(list[i]==x){   // list comes from somewhere too
            System.out.println(i); // print i
            return true;
        }
    }
    return false;
}

如果你需要打印最后一个i可能从数组尾部开始:

boolean sequentialSearch(int x) {
    for(int i=n-1;i>=0;i--) { //n comes from function length()
        if(list[i]==x){   // list comes from somewhere too
            System.out.println(i); // print i
            return true;
        }
    }
    return false;
}

【讨论】:

  • 太棒了,我肯定有一个很好的时刻。哈哈。谢谢!我在想它比这更复杂。
  • 乐于助人!我真的很感谢你接受这个答案。
【解决方案3】:

为什么你检查 i!=0, 而不是从i=1;迭代

for(int i = 1; i < n; i++) 
 {
    if(list[i] == x) 
    { 
        return true;
    }
    return false;
 }

这更容易。 :-)

【讨论】:

    【解决方案4】:

    您真的要打印i 并返回一个布尔值吗?既然-1 经常用于not found,为什么不把它分成两种方法呢。现在您可以搜索任何您想要的目的,即使它是一个 System.out 在 Web 应用程序中不可用的系统。

    boolean sequentialSearch(int x) {
        for(int i = 0, n = list.length; i < n; i++) { 
            if(list[i] == x) {
                return i;
            }
        }
        return -1;
    }
    
    // Later
    int index = sequentialSearch(y);
    if (index != -1) {
        System.out.println(y + " found at index " + index);
    } else {
        System.out.println(y + " not found");
    }    
    

    【讨论】:

      【解决方案5】:

      如何单独打印最后一个值?

      import java.util.Scanner;
      
      public class Fibonacci {
      
          public static void main(String[] arguments) {
              int n1 = 0, n2 = 1, n3;
      
              @SuppressWarnings("resource")
              Scanner s = new Scanner(System.in);
              System.out.print("Enter the value of n: ");
              int n = s.nextInt();
              for (int i = 0; i < n; ++i) {   
                  n3 = n1 + n2;
      
                  n1 = n2;
                  n2 = n3;
              System.out.println(""+n3);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        • 1970-01-01
        相关资源
        最近更新 更多