精华内容
下载资源
问答
  • while循环跳出返回值技巧

    千次阅读 2018-12-05 15:26:42
    可以在不同错误后,置位错误标志位,置位循环标志位,使之跳出循环,根据不同情况的错误标志位数值,跳出循环后返回不同的数值。 这样的做法可以在调试时,将断点设置在循坏外面,从而在不影响循环的情况下,观察...
    在while()循环中,假设使用错误机制时,针对不同的错误类型,返回不同的值时,需要注意。
    

    可以在不同错误后,置位错误标志位,置位循环标志位,使之跳出循环,根据不同情况的错误标志位数值,跳出循环后返回不同的数值。

    这样的做法可以在调试时,将断点设置在循坏外面,从而在不影响循环的情况下,观察返回值。

    int hal_tgtp_dspburn_check(uint8_t tp)
    {
    	uint8_t timesOfGerVer,errOfGetVer;
    	int retOfEcho;
    	uint16_t tempEchoCmdInfo;
    	uint16_t tempArg1,tempArg2,tempArg3,tempArg4;
    	uint32_t ctime, ntime;
    	uint8_t burnflag,loopwait;
    	int lastval;
    	int iRet;
    	timesOfGerVer=0;errOfGetVer = 0;burnflag=0;lastval=0;
    	ctime = arch_sys_mscount();
    
    	//clrrxbuf_canrxpkg(HAL_PCTPPKGCMD_CANID, CAN_CH_CMDMODE);
    	while(!burnflag){
    /*	loopwait=0;
    		while(!loopwait){	
    		ctime = arch_sys_mscount();
    		if (ctime > ntime){
    			ntime = ctime + 500;
    			hal_tgtpburnstchk_send(tp);
    			loopwait=1;
    			}
    		}*/
    		retOfEcho = hal_tgtpnmlcmd_echowait(\
    			&tempEchoCmdInfo,&tempArg1,&tempArg2,&tempArg3,&tempArg4);
    			if (retOfEcho<0){
    				timesOfGerVer++;
    				if (timesOfGerVer<waittimes){
    					continue;
    				}
    				errOfGetVer = 1;
    				burnflag = 1;
    				continue;
    			}
    			printf("process is %d\r\n",tempArg2);	
    			if (tempEchoCmdInfo!=TGTP_DSPPRG_BURSTCHK){	//Êý¾Ý²»¶Ô
    				errOfGetVer = 2;
    				burnflag = 1;
    				continue;
    			}
    			if (tempArg2< lastval||tempArg2>0x64){
    				errOfGetVer = 3;
    				burnflag = 1;
    				continue;
    			}
    			lastval=tempArg2;
    			if ((tempArg2== TGTP_DSPPRG_PROCESS)&&(errOfGetVer==0)){
    				errOfGetVer = 0;
    				burnflag = 1;
    				continue;
    			}
    	}
    	iRet = 0;
    	if (errOfGetVer!=0){                         //³¬Ê±
    		if (errOfGetVer == 1){
    			iRet = -1;
    		}
    		else if (errOfGetVer == 2){
    			iRet = -2;
    		}
    		else if (errOfGetVer == 3){
    			iRet = -3;
    		}
    	}
    	else{
    		iRet = 1;
    	}
    	
    	return iRet;       
    }
    
    展开全文
  • for循环,while循环,break跳出循环

    千次阅读 2018-01-23 01:57:14
    for循环,while循环,break跳出循环

    for循环

    一般格式:

    for var in item1 item2 ... itemN
    do
        command1
        command2
        ...
        commandN
    done

    写成一行:

    for var in item1 item2 ... itemN; do command1; command2… done;

    eg:

    需求:求1到100数字的和。

    [root@dl-001 sbin]# vim sum.sh
    #!/bin/bash
    sum=0
    for i in `seq 1 5`
    do
      sum=$[sum+$i]
    done
    echo "$sum"
    
    [root@localhost sbin]# sh sum.sh 
    15

    需求:文件列表循环

    [root@dl-001 sbin]# vim for.sh
    #!/bin/bash
    dir=/usr/local/sbin/
    for a in `ls $dir`
    do
        if [ -d $a ]
        then
            echo $a
            ls $a
        fi
    done
    echo "No directory file!"
    
    [root@dl-001 sbin]# sh -x for.sh 
    + dir=/usr/local/sbin/
    ++ ls /usr/local/sbin/
    + for a in '`ls $dir`'
    + '[' -d datefile.sh ']'
    + for a in '`ls $dir`'
    + '[' -d filetar.sh ']'
    + for a in '`ls $dir`'
    + '[' -d for.sh ']'
    + for a in '`ls $dir`'
    + '[' -d if2.sh ']'
    + for a in '`ls $dir`'
    + '[' -d sum.sh ']'
    + echo 'No directory file!'
    No directory file!

    for——分隔符

    [root@dl-001 dd]# touch 1.txt
    [root@dl-001 dd]# touch 1\ 2.txt        //这里的\是转义的意思,创建的是一个 1 2.txt文件
    [root@dl-001 dd]# ls
    1 2.txt  1.txt
    [root@dl-001 dd]# for i in `ls ./` ; do echo $i ; done
    1
    2.txt
    1.txt        //可见for循环已经把1 2.txt 循环分割成了1  ,   2.txt

    注意:for默认情况下把空格或换行符(回车)作为分隔符。


    while循环

    普通格式:

    while condition
    do
        command
    done

    简化格式:

    while 条件;do…;done

    无限循环语法格式:

    while :
    do
        command
    done

    eg:

    需求:当系统负载大于10的时候,发送邮件,每隔30秒执行一次。

    [root@dl-001 shell]# vim while.sh
    #!/bin/bash
    while :
    do
      load=`w|head -1 |awk -F 'load average:' '{print $2}' |cut -d . -f1`
      if [ $load -gt 10 ]
      then
          top |mail -s "load is high: $load" abc@111.com
      fi
       sleep 30
    done
    #while “:”表示死循环,也可以写成while true,意思是“真”
    
    #Attention:awk -F 'load average: '此处指定'load average: '为分隔符,注意冒号后面的空格
    #如果不加该空格,过滤出来的结果会带空格,需要在此将空格过滤掉  
    
    
    [root@dl-001 shell]# sh -x while.sh 
    + :
    ++ head -1
    ++ awk -F 'load average: ' '{print $2}'
    ++ cut -d. -f1
    ++ w
    + load=0
    + '[' 0 -gt 10 ']'
    + sleep 30
    .
    .
    .

    说明:如果不手动停止该脚本,它会一直循环执行(按Ctrl+c结束),实际环境中配合screen使用。

    需求:交互模式下,用户输入一个字符,检测该字符是否符合条件,如:空、非数字、数字。分别对字符做出判断,然后做出不同的回应。

    [root@dl-001 sbin]# vim while2.sh
    #!/bin/bash
    while true
    do
      read -p "Please input a number:" n
      if [ -z "$n" ]
      then 
          echo "You need input some characters!"
          continue
      fi
      n1=`echo $n|sed 's/[-0-9]//g'`
      if [ -n "$n1" ]
      then
          echo "The character must be a number!"
          continue
      fi
      break
    done
    echo $n
    #continue:中断本次while循环后重新开始;
    #break:表示跳出本层循环,即该while循环结束
    
    [root@dl-001 shell]# sh while2.sh 
    Please input a number: 
    You need input a character!
    Please input a number:eee333
    The character must be a number!
    Please input a number:3
    3

    break 跳出循环

    eg:

    [root@dl-001 sbin]# vim break.sh
    #!/bin/bash
    for i in `seq 1 5`
    do
      echo "$i"
      if [ $i -eq 3 ]
      then
      break
      fi
      echo "$i"
    done
    echo "Finished!"
    
    
    [root@dl-001 sbin]# sh break.sh 
    1
    1
    2
    2
    3
    Finished!

    即,跳出while循环,继续执行循坏之外的命令。

    展开全文
  • for循环 for循环的基本结构: for 变量名 in 循环的条件; do command done 编写for循环脚本:计算1到100所有数字和: #!/bin/bash sum=0 for i in `seq 1 100` do echo "$sum + $i" sum=$[$sum+$i...

    for循环

    for循环的基本结构:

    for 变量名 in 循环的条件; do
    command
    done

    编写for循环脚本:计算1到100所有数字和:

    #!/bin/bash
    sum=0
    for i in `seq 1 100`
    do
    echo "$sum + $i"
    sum=$[$sum+$i]
    echo $sum
    done
    echo $sum
    

    文件列表循环
    ls所有的目录

    #!/bin/bash
    cd /etc/
    #如果不进入目录,就不能ls
    for a in `ls /etc/`
    do
        if [ -d $a ]
        then
            echo $a
            ls $a
        fi
    done
    

    for循环的时候回以空格或回车作为分割符

    while循环

    语法: while 条件; do command ; done.

    每隔30秒检查系统负载,当负载达到10,发一份邮件

    #!/bin/bash
    while true
    do
        load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
    
        if [ $load -gt 10 ]
        then
             /usr/local/sbin/mail.py zhuneianxiang@163.com "load high" "$load"
             #发邮件
        fi
        sleep 30
        #休息三十秒
    done
    

    让用户不断的输入纯数字,才停止换算:

    #!/bin/bash
    while :
    #while死循环
    do
    read -p "Please input a number: " n
    #用户交互,输入一个数
        if [ -z "$n" ]
        #判断n是否为空,空结束本次循环
        then
        echo "you need input sth."
        continue
        fi
    n1=`echo $n|sed 's/[0-9]//g'`
    #将n中非数字的部分赋值给n1
        if [ ! -z "$n1" ]
        #判断n1是否为空,不为空,说明不全是数字,continue结束本次循环,为空,break跳出循环
        then
        echo "you just only input numbers."
        continue
        fi
        break
    done
    echo $n
    #打印出输入的数
    

    break跳出循环

    break跳出循环:
    跳出整个循环,一执行break,后边的循环就不做了。

    #!/bin/bash
    for i in `seq 1 5`
    do
    echo $i
    if [ $i -eq 3 ]
    then
    break
    fi
    echo $i
    done
    echo aaaaa
    

    continue结束本次循环

    continue结束本次循环:
    执行到continue,这次循环就不做了,做下一次循环

    #!/bin/bash
    for i in `seq 1 5`
    do
        echo $i
        if [ $i -eq 3 ]
        then
        continue
        fi
        echo $i
    done
    echo aaaaa
    

    exit退出整个脚本

    exit直接退出整个脚本:

    #!/bin/bash
    for i in `seq 1 5`
    do
    echo $i
    if [ $i -eq 3 ]
    then
    exit
    fi
    echo $i
    done
    echo aaaaa
    
    展开全文
  • while语句中,一开始满足条件进入循环,程序运行到一半又不满足了,这时候是直接跳出循环吗?
  • C++ 按键跳出while循环

    千次阅读 2019-06-21 11:33:12
    #include <iostream> #include "conio.h" int main() { while (true) { // 在此处填入需要循环的... if (_getch() == 'q') //如果按下了q键则跳出循环 { break; } } } re...

    方法1

    #include <iostream>
    #include "conio.h"
    
    int main()
    {
    	while (true)
    	{
    		// 在此处填入需要循环的代码
    		
    		if (_kbhit()) // 如果有按键被按下
    		{
    			if (_getch() == 'q') //如果按下了q键则跳出循环
    			{
    				break;
    			}
    
    		}
    	}
    	return 0;
    }
    
    

    方法2

    #include <iostream>
    #include <string>
    
    int main() {
    	bool done = false;
    	std::string input;
    
    	while (!done) {
    		std::cout << "请输入命令: ";
    		std::getline(std::cin, input);
    
    		if (input == "q") {
    			done = true;
    		}
    		else if (input == "help") {
    			std::cout
    				<< "\nCommand List:\n"
    				<< "help: Display this help text\n"
    				<< "quit: Exit the program\n"
    				<< std::endl;
    		}
    		else {
    			std::cout << "Unrecognized Command" << std::endl;
    		}
    	}
    
    	getchar();
    	return 0;
    }
    

    如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com/,更多博文干货等着您。

    展开全文
  • while循环里包含一个switch,break只能跳出switch。 通过设置条件让循环跳出while; 例如: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new ...
  • 描述:双层while循环时,想在不满足外层循环条件时跳出内层循环 上面代码中的第二个方法中,如果内层循环中两个while循环不添加条件left<right。使用debug的时候,当left指向t,right指向c时,此时,满足外层...
  • return可以跳出for循环和while循环

    千次阅读 2020-03-28 17:54:03
    for循环 def A(e): L=[1,5] for i in range(e): L.append(L[-1]+L[-2]) print(L) return (L[-1]) print(A(7)) 运行结果: ...由此可见return可以中断for循环 while循环 def A(e): L=[1,5] while...
  • 跳出while循环的三种方法

    千次阅读 2020-07-29 22:49:01
    跳出while循环的三种方法(以Python代码为例) 文章目录跳出while循环的三种方法(以Python代码为例)方法1: break语句方法2: 标志位方法3: 判断不结束 在《Python编程从入门到实践》书中有这么一道习题:比萨配料: ...
  • 输入“End”后还是要我继续输入,没有结束循环 import java.util.Scanner; public class Main_剪刀石头布 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in...
  • Java while循环与dowhile循环

    千次阅读 2019-04-25 23:53:45
    Java while循环与dowhile循环1.while循环2.do...while循环 1.while循环 语法 while(表达式){ 循环体 } 循环三要素1.变量初始化 2.循环条件的判断 3.计数器的累加(朝着跳出循环移动) 例子 class Demo7{ /**打印1...
  • CONTINUE 回到循环开始 /BREAK跳出循环。下面是一个简单的例子:1>DECLARE2> @testvalueASINT;3> BEGIN-- 设置变量初始值 = 04> SET @testvalue = 0;-- 当变量小于5 循环5>WHILE@testvalue < 56&...
  • for循环•语法:for 变量名 in 条件; do …; done示例计算1到100所有数字的和#!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum列出etc目录下的所有目录#!/bin/bash cd /etc/ for a in `ls...
  • for循环 语法:for 变量名 in 条件; do …; done 案例1 1+2+3..+100的和 sum 第一次作为变量的时候,是0;当进入for循环里面的时候,每运算一次,sum变量就会改变一次,直至$i 结束;最后输出结果 $sum 在做...
  • for循环 语法:for 变量名 in 条件 ; do done; 案例一: 计算1-100所有数字的和。 脚本: #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum 结果: [root@congji ~]# sh 1-100.sh ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,493
精华内容 55,397
关键字:

while循环跳出当前循环