多重for循环的continue问题

问题描述

import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;public class Problem60 {public static boolean[] prime = new boolean[1000000];public static boolean IsPrime(long number) {for (int i = 2; i * i <= number; i++) {if (number % i == 0)return false;}return true;}public static void main(String[] args){Arrays.fill(prime, false);prime[1] = true;prime[2] = true;int count_prime = 0;for(int i=3; i<1000; i=i+2){if(IsPrime(i)){prime[i] = true;count_prime++;}}int[] prime_set = new int[count_prime];prime_set[0] = 1;prime_set[1] = 3;int index = 2;for(int i=7; i<1000; i++){if(prime[i])prime_set[index++] = i;}for(int i=3; i<prime.length; i=i+2){if(IsPrime(i)){prime[i] = true;}}System.out.println("prime_set:"+prime_set.length);int len = prime_set.length;int i=0,j=0,k=0,l=0,m=0;for(i=0; i<len; i++){for(j=i+1; j<len; j++){int t1= Integer.parseInt(prime_set[i]+""+prime_set[j]);int t2= Integer.parseInt(prime_set[j]+""+prime_set[i]);if(!prime[t1]||!prime[t2]){continue;}for(k=j+1; k<len; k++){int t3= Integer.parseInt(prime_set[i]+""+prime_set[k]);int t4= Integer.parseInt(prime_set[k]+""+prime_set[i]);int t5= Integer.parseInt(prime_set[k]+""+prime_set[j]);int t6= Integer.parseInt(prime_set[j]+""+prime_set[k]);if(!prime[t3]||!prime[t4]||!prime[t5]||!prime[t6]){continue;}for(l=k+1; l<len; l++){int t7= Integer.parseInt(prime_set[i]+""+prime_set[l]);int t8= Integer.parseInt(prime_set[l]+""+prime_set[i]);int t9= Integer.parseInt(prime_set[l]+""+prime_set[j]);int t10= Integer.parseInt(prime_set[j]+""+prime_set[l]);int t11= Integer.parseInt(prime_set[k]+""+prime_set[l]);int t12= Integer.parseInt(prime_set[l]+""+prime_set[k]);if(!prime[t7]||!prime[t8]||!prime[t9]||!prime[t10]||!prime[t11]||!prime[t12]){continue;}for(m=l+1; m<len; m++){int t13= Integer.parseInt(prime_set[i]+""+prime_set[m]);int t14= Integer.parseInt(prime_set[m]+""+prime_set[i]);int t15= Integer.parseInt(prime_set[m]+""+prime_set[j]);int t16= Integer.parseInt(prime_set[j]+""+prime_set[m]);int t17= Integer.parseInt(prime_set[k]+""+prime_set[m]);int t18= Integer.parseInt(prime_set[m]+""+prime_set[k]);int t19= Integer.parseInt(prime_set[m]+""+prime_set[l]);int t20= Integer.parseInt(prime_set[l]+""+prime_set[m]);//System.out.println("i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]);System.out.println("No:i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);if(!prime[t13]||!prime[t14]||!prime[t15]||!prime[t16]||!prime[t17]||!prime[t18]||!prime[t19]||!prime[t20]){//int sum = prime_set[i]+prime_set[j]+prime_set[k]+prime_set[l]+prime_set[m];//System.out.println("----------i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]+",sum:"+sum);//System.out.println("--No:i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);continue;}else{int sum = prime_set[i]+prime_set[j]+prime_set[k]+prime_set[l]+prime_set[m];System.out.println("----------i:"+prime_set[i]+",j:"+prime_set[j]+",k:"+prime_set[k]+",l:"+prime_set[l]+",m:"+prime_set[m]+",sum:"+sum);}}}}}}System.out.println("i:"+i+",j:"+j+",k:"+k+",l:"+l+",m:"+m);}}打印出来的:No:i:0,j:1,k:2,l:141,m:166No:i:1,j:2,k:27,l:120,m:121。。。No:i:7,j:62,k:121,l:142,m:165No:i:7,j:62,k:121,l:142,m:166i:167,j:167,k:167,l:167,m:167怎么i都不是按顺序的遍历啊~崩溃了

解决方案

continue的意思就是 中断本次循环,继续下一次循环,举个简单例子更容易理解:for(int i=0;i<10;i++){ for(int k=0;k<20;k++){ System.out.println("start"); if(k==5){ continue; } System.out.println("end");}}这段代码的意思就是:当k=5的时候,中断本次循环,也就是说不会打出end这个字符串,然后继续循环k=6的时候。
解决方案二:
continue指结束当前1次循环的继续执行,计数器步进,循环操作继续。如下 for ( int i = 0; i < 10 ; i++){ … //statements if( i == 3) continue; … //other statements } 当条件i == 3成立后other statements将不会再执行,而是i步进后跳回到for循环继续往下执行break指结束当前所有循环,并且循环计数器不再步进,如下for ( int i = 0; i < 10 ; i++){ … //statements if( i == 3) break; … //other statements } … //outer statements 当条件i == 3成立后,跳出for循环往下执行outer statements,并且i不再步进,维持3不变,这个地方类似于return的作用。另外break和continue只能作用于最内层循环,即如果多层嵌套的话,对外层循环不起作用。break和continue只用于for、while、do…while、switch语句,其他地方都不能使用,且二者的使用是为了能简化程序,如果使用后程序反而复杂化就要考虑改用其他实现了。
解决方案三:
它不会中断外层的循环,只是中断了内层的循环中k=5的那次循环,然后紧接着k变成6,然后开始打印start,end 一直继续。lz应该明了了哦。

时间: 2024-09-09 13:37:01

多重for循环的continue问题的相关文章

关于While循环和Continue的问题

问题描述 关于While循环和Continue的问题 用这种方法输出101-200以内的质数,问题出在哪里呢? public class Test{ public static void main(String[] args){ int i=101; boolean f=true; while(i<=200){ for(int j=2;j<i;j++){ if(i%j==0){ f=false; break; } } if(!f){i=i+1;continue;} System.out.pri

javaScript如何跳出多重循环break、continue_javascript技巧

先来说说break和continue之间的区别 摘自JavaScript高级程序设计 for(var i=0;i<10;i++){ if(i>5){ break; } } console.log(i); ---6  •当i=5和10的时候,会执行到break,并退出循环 for(var i=1;i<10;i++){ if(i>5){ continue; } num++; } console.log(num); ---4 var num=0; for(var i=1;i<10;

switch语句 与 do…while循环 continue语句(javascript教程二)

本文章主要讲到了关于使用switch语句进行多重条件判断范例 使用do-while循环范例 continue语句:停止当前循环进入下一次循环等详细实例. <script language="网页特效" type="text/javascript"> <!-- var month=prompt("请输入月份:",1); month=parseint(month); //非必须:将月份转换为数字类型 switch(month){  

循环-continue 和break语句的区别

问题描述 continue 和break语句的区别 main() { int k = 4, n; for (n = 0; n < k; n++) { if (n % 2 == 0) break; k--; } printf("k = %d , n = %d ", k, n); system("pause"); } 求大神指教 使用break输出k =4 ,n = 0;;;;使用continue输出 k=3,n=3 解决方案 break结束循环:continue

解析PHP跳出循环的方法以及continue、break、exit的区别介绍

PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式: 代码: 复制代码 代码如下: <?php $i = 1; while (true) { // 这里看上去这个循环会一直执行 if ($i==2) {// 2跳过不显示 $i++; continue; } else if ($i==5) {// 但到这里$i=5就跳出循循环了 break; } else { echo $i . '<br

php for循环语句的几种用法分析

for 循环的语法是:    代码如下 复制代码 for (expr1; expr2; expr3) statement 下面说说for语句几种有用的变型. 1.无限循环 这种也叫死循环,没有开始和结束一直就这样下去  代码如下 复制代码 <?php for (;;) { //放置需要不断执行的语句 } ?> 死循环如果在当中配合if else ,break也可以跳出循环  代码如下 复制代码 <?php for (;;) { //如果是公元2199年,则跳出循环 if (date('Y

解析PHP跳出循环的方法以及continue、break、exit的区别介绍_php技巧

PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式:代码: 复制代码 代码如下: <?php$i = 1;while (true) { // 这里看上去这个循环会一直执行    if ($i==2) {// 2跳过不显示        $i++;        continue;    } else if ($i==5) {// 但到这里$i=5就跳出循循环了        break; 

FLASH条件和循环语句

条件|循环|语句 Actions cript 的条件和循环语句有 if, else, else if, for, while, do...while, for...in 和 switch. 在 Flash 中它们被叫做流程控制动作(Action), 但实际上, 其实质与其它程序语言没什么不一样的. 因为条件和循环语句是程序语言中最基础的, 也是最具有实用价值的语句, 所以要在这里仔细讲解一下. 对于有 C++ 和 Java 等编程经验的读者随意浏览一下就可以了.条件语if句--if可以说是程序语

JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结

JAVA之旅(二)--if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学--献给刚入门的小程序员们 一.语句 一般语句也就三个类型 判断语句 if 选择语句 switch 循环语句 for 当然,还有其他的 我们这里一个一个来讲 1.if if,如果,就是判断,if(条件){} //公共的 类 类名 public class HelloJJAVA { // 公共的 静态 无