多层循环的变量如何将值传出

来源:互联网 发布:sql 注入式攻击 编辑:程序博客网 时间:2024/05/22 12:23

循环中的定义的变量都是局部变量不能在外面使用。但是很多时候我们都需要在循环后继续使用。

一种是定义一个零时变量,进行值的交换。下面这个例子中的temp就是互相传值的一个中间变量

//用数组,对五个数进行排序,并且输出。
import java.util.Scanner;
public class PaiXu {
public static void main(String[]args){
System.out.println("请输入五个数");
Scanner s = new Scanner(System.in);
int [] sl = new int[5];
int temp = 0;
int i = 0;
for(i= 0;i<sl.length;i++){
sl[i] = s.nextInt();
}
s.close();
for(i=0;i<4;i++){//每次找到最小值
for(int k= 0;k<sl.length-1-i;k++)
if(sl[k]<sl[k+1]){
temp=sl[k+1];
sl[k+1]=sl[k];
sl[k]=temp;
}
}
for(int j =0;j<sl.length;j++)System.out.println(sl[j]);
}
}

另一种用boolean然后再用if进行判断一个简单的例子说明:请找出0~100的所有素数。

public class AllSuShu {
public static void main(String[]args){
int i = 0 ;
boolean boo = true;
System.out.println("1--100的素数有:");
for (i=2;i<=100;i++){
boo = true;//初始化为真
for(int k=2;k<i;k++){
if(i%k ==0){ 
boo = false;
}

}
if(boo) System.out.println(i);
}
}
}

通过这样的方法我们就能让内层循环的值传出来。不用每次循环。

下面这个在特殊的循环while try catch 下,里面的变量需要每次都重新定义

而一般循环里更改了变量的值,导致外循环无法循环下去。所以我们最好是在循环外定义,在循环里面赋值。需要注意的是,循环里的每次循环都在上面进行重新初始化。

//传出boo1  和quKuan

int quKuan =o;   boolean  boo1=false;

 for(i=1;i<4;i++){//三次取款输入
  while(true){//输入非法字符提示错误
  try{
  xTong.XTQuKuan(); //引用的登录界面
  Scanner s1=new Scanner(System.in);//在循环中的try必须重新new一个,不然quKuan无法更新 
  int quKuan1= s1.nextInt(); 
  boo1 = true;//输入无非法字符
  quKuan = quKuan1;//将输入格式正确的输出
  }
  catch(InputMismatchException e){
  xTong.XTQuKuanWrongZF();//提示非法字符
  boo1 = false;//输入有非法字符
  break;
  }
  } 
  if(boo1==false) continue;//有非法字符重新进入输入界面

}

同样我们可以使用do  while 循环,在do里面对变量进行初始化。所以尽量做到在外面定义,再循环一定初始化。

0 0
原创粉丝点击