for(int i=0;i<5;i++){
           for(int j=0;j<5;j++){
               if(i==1){
                   System.out.println (j);
                   
               }
           }
       }
System.out.println ("ok");
当=1时    我要 两层循环 都不运行 直接 System.out.println ("ok");
有没有办法   
我只知道 continue break 好像都没办法     这样

解决方案 »

  1.   

    return 直接跳出方法体
    public void method1(){
    for(int i=0;i<5;i++){
               for(int j=0;j<5;j++){
                   if(i==1){
                       System.out.println (j);
                       System.out.println ("ok");
                       return;
                   }
               }
           }
    }
      

  2.   

    不知道楼主的需求是什么,
    1、打印满足i=1时候所有的j然后输出OK(这样的话你就不能判断i==1就跳出,只能继续遍历)
    2、只打印第一个j然后输出OK(这个可以用上面的代码)
      

  3.   

    第一层里面加个标记好了。直接break是不能跳两个的。直接return的话,如果for下面还有逻辑就不行。
      

  4.   

    楼主,让我们回顾一下 thinking in java 这本书里面是怎么说的.  在c和c++里面有goto语句快要直接跳出,但是java没有.看原文是怎么做到的1. 臭名昭著的“goto”
    goto关键字很早就在程序设计语言中出现。事实上,goto是汇编语言的程序控制结构的始祖:“若条件A,则跳到这里;否则跳到那里”。若阅读由几乎所有编译器生成的汇编代码,就会发现程序控制里包含了许多跳转。然而,goto是在源码的级别跳转的,所以招致了不好的声誉。若程序总是从一个地方跳到另一个地方,还有什么办法能识别代码的流程呢?随着Edsger Dijkstra著名的“Goto有害”论的问世,goto便从此失宠。
    事实上,真正的问题并不在于使用goto,而在于goto的滥用。而且在一些少见的情况下,goto是组织控制流程的最佳手段。
    尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子。它并不属于一次跳转,而是中断循环语句的一种方法。之所以把它们纳入goto问题中一起讨论,是由于它们使用了相同的机制:标签。
    “标签”是后面跟一个冒号的标识符,就象下面这样:
    label1:
    对Java来说,唯一用到标签的地方是在循环语句之前。进一步说,它实际需要紧靠在循环语句的前方——在标签和循环之间置入任何语句都是不明智的。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环或者一个开关。这是由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。如下所示:label1:
    外部循环{
    内部循环{
    //...
    break; //1
    //...
    continue; //2
    //...
    continue label1; //3
    //...
    break label1; //4
    }
    }在条件1中,break中断内部循环,并在外部循环结束。在条件2中,continue移回内部循环的起始处。但在条件3中,continue label1却同时中断内部循环以及外部循环,并移至label1处。随后,它实际是继续循环,但却从外部循环开始。在条件4中,break label1也会中断所有循环,并回到label1处,但并不重新进入循环。也就是说,它实际是完全中止了两个循环。
    下面是for循环的一个例子:
    //: LabeledFor.java
    // Java’s "labeled for loop"public class LabeledFor {
      public static void main(String[] args) {
        int i = 0;
        outer: // Can't have statements here
        for(; true ;) { // infinite loop
          inner: // Can't have statements here
          for(; i < 10; i++) {
            prt("i = " + i);
            if(i == 2) {
              prt("continue");
              continue;
            }
            if(i == 3) {
              prt("break");
              i++; // Otherwise i never
                   // gets incremented.
              break;
            }
            if(i == 7) {
              prt("continue outer");
              i++; // Otherwise i never
                   // gets incremented.
              continue outer;
            }
            if(i == 8) {
              prt("break outer");
              break outer;
            }
            for(int k = 0; k < 5; k++) {
              if(k == 3) {
                prt("continue inner");
                continue inner;
              }
            }
          }
        }
        // Can't break or continue
        // to labels here
      }
      static void prt(String s) {
        System.out.println(s);
      }
    } ///:~这里用到了在其他例子中已经定义的prt()方法。
    注意break会中断for循环,而且在抵达for循环的末尾之前,递增表达式不会执行。由于break跳过了递增表达式,所以递增会在i==3的情况下直接执行。在i==7的情况下,continue outer语句也会到达循环顶部,而且也会跳过递增,所以它也是直接递增的。
    下面是输出结果:
    i = 0
    continue inner
    i = 1
    continue inner
    i = 2
    continue
    i = 3
    break
    i = 4
    continue inner
    i = 5
    continue inner
    i = 6
    continue inner
    i = 7
    continue outer
    i = 8
    break outer如果没有break outer语句,就没有办法在一个内部循环里找到出外部循环的路径。这是由于break本身只能中断最内层的循环(对于continue同样如此)。
    当然,若想在中断循环的同时退出方法,简单地用一个return即可。
    下面这个例子向大家展示了带标签的break以及continue语句在while循环中的用法:
    //: LabeledWhile.java
    // Java's "labeled while" looppublic class LabeledWhile {
      public static void main(String[] args) {
        int i = 0;
        outer:
        while(true) {
          prt("Outer while loop");
          while(true) {
            i++;
            prt("i = " + i);
            if(i == 1) {
              prt("continue");
              continue;
            }
            if(i == 3) {
              prt("continue outer");
              continue outer;
            }
            if(i == 5) {
              prt("break");
              break;
            }
            if(i == 7) {
              prt("break outer");
              break outer;
            }
          }
        }
      }
      static void prt(String s) {
        System.out.println(s);
      }
    } ///:~同样的规则亦适用于while:
    (1) 简单的一个continue会退回最内层循环的开头(顶部),并继续执行。
    (2) 带有标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环。
    (3) break会中断当前循环,并移离当前标签的末尾。
    (4) 带标签的break会中断当前循环,并移离由那个标签指示的循环的末尾。
    这个方法的输出结果是一目了然的:
    Outer while loop
    i = 1
    continue
    i = 2
    i = 3
    continue outer
    Outer while loop
    i = 4
    i = 5
    break
    Outer while loop
    i = 6
    i = 7
    break outer大家要记住的重点是:在Java里唯一需要用到标签的地方就是拥有嵌套循环,而且想中断或继续多个嵌套级别的时候。
    在Dijkstra的“Goto有害”论中,他最反对的就是标签,而非goto。随着标签在一个程序里数量的增多,他发现产生错误的机会也越来越多。标签和goto使我们难于对程序作静态分析。这是由于它们在程序的执行流程中引入了许多“怪圈”。但幸运的是,Java标签不会造成这方面的问题,因为它们的活动场所已被限死,不可通过特别的方式到处传递程序的控制权。由此也引出了一个有趣的问题:通过限制语句的能力,反而能使一项语言特性更加有用。
      

  5.   

    continue break加标签是可以的
      

  6.   

    直接用return要不在第一层循环就判断是否为 1 
    为1的话直接跳出就行,不进去里层的循环
      

  7.   

    public class T { /**
     * @param args
     */
    public static void main(String[] args) {
    for(int i=0;i<5;i++){
     if(i==1){
                break;
               }
               for(int j=0;j<5;j++){ 
                System.out.print("i==: "+i+"  j的值:  "+j);
                 System.out.println();
                   }
              
           }
    System.out.println ("ok");
    }你首先判断这次循环里面i的值是多少,然后加上条件限制,而不是先去执行j的循环,再去判断i 的值是多少
    来我的Java群吧:    JAVAMM工作室     49167765
    每周都有一节免费的基础课,比较适合你这样的初学者,已经持续讲课一段时间了,效果不错
      

  8.   

    label:
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j < 5; j++) {
            if(i == 1) {
                System.out.println(j);
                break label;
            }
        }
    }
    System.out.println("ok");