Java 为什么';这不是休息吗

Java 为什么';这不是休息吗,java,Java,我下面的代码来自Oracle public class MyLoop { public static void main(String[] args) { String[] sa = {"tom ", "jerry "}; for(int x = 0; x < 3; x++) { for(String s : sa) { System.out.print(x + " " + s); if(x == 1) break;

我下面的代码来自Oracle

public class MyLoop {
  public static void main(String[] args) { 
    String[] sa = {"tom ", "jerry "}; 
    for(int x = 0; x < 3; x++) {
      for(String s : sa) {
        System.out.print(x + " " + s);
        if(x == 1) break; 
      }
    }
  }
}
我正在学习java,我遇到了这个问题。我不明白为什么
1汤姆
1
休息时打印。如果
1 tom
打印,那么为什么不
1 jerry

首先选中“x==1”,然后打印

String[] sa = { "tom ", "jerry " };
for (int x = 0; x < 3; x++) {

    for (String s : sa) {
        if (x == 1) {
          break;
        }
        System.out.print(x + " " + s);

     }
}
String[]sa={“tom”,“jerry”};
对于(int x=0;x<3;x++){
用于(字符串s:sa){
如果(x==1){
打破
}
系统输出打印(x+“”+s);
}
}

对于
x的每个值
您正在打印表
sa
的全部内容,除了x==1,其中您只打印sa的第一个值:打印此值后,您将检查x==1,然后离开内部循环并继续使用下一个值x。

因为中断只会破坏下一个标签。。。所以在“汤姆”和“杰瑞”之间的内部循环。。。。除此之外,关于代码的解释在这里是离题的:(请拿一个a并阅读你的代码是顺序的。只需用铅笔画出执行过程。它是正确的:迭代x=0,s=tom,输出0tom.s=jerry输出0jerry.x=1 outout=1tom.x它是exaclty 1所以break.x=2与x=0相同。@Vogel612-这与OP的原始代码的行为不同。(我不认为你的意思是这么说,但你的评论的措辞可能会这么说。)这个答案的问题是它没有解决OP的问题,也就是解释为什么原始代码的行为方式是这样的。
String[] sa = { "tom ", "jerry " };
for (int x = 0; x < 3; x++) {

    for (String s : sa) {
        if (x == 1) {
          break;
        }
        System.out.print(x + " " + s);

     }
}