11.26 语句 程序流程变量 for&while的总结

本文详细介绍了循环结构的基础概念、使用场景及各种循环语句的特点。包括while、do...while、for循环的不同应用场景,以及循环嵌套、累加和计数器思想的应用。并通过多个示例演示了如何使用循环解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环结构:


while语句

格式:
定义初始化表达式;
while(条件表达式)
{
执行语句;
}

eg.
(1-100的和):

package org.westos.www;
/*
 * 1-100的和
 */
public class WhileDemo 
{

    public static void main(String[] args) 
    {
        int sum=0;
        int i=100;
        while(i>1) 
        {
            sum+=i;
            i--;

        }
        System.out.println("sum="+sum);



    }

}

eg.
(补考):

package org.westos.www;
import java.util.Scanner;

public class WhileExam 
{
    public static void main(String[] args)
    {
        Scanner scan=new Scanner(System.in);
        int count=0;
        System.out.println("请输入考试成绩:");
        int score=scan.nextInt();
        while(score<60) 
        {
            count++;
            System.out.println("当前不及格,这是第"+count+"次补考");
            System.out.println("*****补考中*******");
            System.out.println("请输入补考后的成绩");
            score=scan.nextInt();//是阻塞键盘等待用户输入int类型的值,用户输入之前一直阻塞。

        }

        System.out.println("恭喜你,及格了!");
        scan.close();




    }

}

do while语句
格式:
do
{
执行语句;
}while(条件表达式);

while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。无论条件是否满足,循环体至少执行一次。

for语句

格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}

eg.
( 实现1-100能被3整除不能被5整除的数的和)

package org.westos.www;

public class DivideFor
{

    public static void main(String[] args) 
    {
        int sum=0;
        for(int i=1;i<=100;i++) 
        {
            if(i%3==0&i%5!=0)  
            {
                sum+=i;

            }
        }
        System.out.println("sum="+sum);



    }

}

for和while的区别:


//注意:作用范围的问题,导致以下结果不同。
//x在内存中生成,执行完后消失;而y在内存中生成,执行完后还在内存中。
eg.
for(int x=0;x<3;x++)
{
    System.out.println.("x="+x);
}
System.out.println.("x====="+x);


int y=0;
while(y<3)
{
    System.out.println("y="+y);
}
System.out.println("y====="+y);

1.变量有自己的作用域。对于for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for循环内有效。for语句执行完毕,该变量在内存中被释放。
2.for和while可以进行互换。如果需要定义循环增量,用for更合适。

总结:
什么时候使用循环结构?
当对某些语句执行很多次时,就使用循环结构。

!定义一个变量,这个变量的数值变化是有规律的,
用循环操作了这个变量后,还要在下面的代码中使用这个结果,用while
循环合适。


循环语句的其他特点:

for(System.out.println("a");System.out.println("b");System.out.println("c"))
{
    System.out.println("d");
}
//执行结果是:编译是失败的。因为循环条件表达式,也就是第二步,不知是真是假。

int x=1;
for(System.out.println("a");x<3;System.out.println("d"),x++)
{
    System.out.println("d");


}
//多表达式出现时,用,隔开。
//编译通过,结果是adcdc

条件表达式必须有真假,才能执行。

无限循环的最简单表达形式:
1.for(; ;) {}

2.while(true)


for语句-累加&计数器

eg.
(获取1-10的和,并打印)

public static void main(String [] args)
{
    int sum=0;//1.定义变量用于存储不断变化的和。
    int x=1;//2.定义变量,记录住不断变化的被+的数。
    while(x<=10)//3.定义循环,重复加法的过程。
    {
        sum+=x;
        x++;
    }
    System.out.println("sum="+sum);
}

循环注意:
一定要明确哪些语句需要参与循环,哪些不需要。

int sum=0;
for(int x=1;x<=10;x++)
{
    sum+=x;
}
System.out.println("sum="+sum);

eg.
(1-100之间7的倍数的个数,并打印)
思路:
1.先对1-100进行循环(遍历)通过循环的形式
2.在遍历的过程,只对7的倍数进行操作
3.因为7的倍数不确定,只要符合条件,就通过一个变量来记录住这个变化的次数。
步骤:
1.定义循环语句,用for比较合适
2.在循环中定义判断,只要是7的倍数即可。使用if语句(x%7==0)
3.定义变量,该变量随着7的倍数的出现而自增

int count=0;
for(int x=1;x<=100;x++)
{
    if(x%7==0)
        count++;
}
System.out.println("count="+count);

累加思想:
原理:通过变量来记录住循环操作后的结果。每次变化的结果通过循环的形式,进行累加的动作。

计数器思想:
原理:通过一个变量记录住数据的状态变化,也需要通过循环完成。


for嵌套

eg.
****
****
****
for(int x=0;x<3;x++)
{
    for(int y=0;y<4;y++)
    {
        System.out.print("*");
    }
    System.out.println();
}

对于打印长方形:外循环控制行数,内循环控制列数,也就是一行中算式的个数。

eg.
*****
****
***
**
*
int z=5;              //int z=0;
for(int x=0;x<5;x++)
{
    for(y=0;y<z;y++)//(y=z;y<5;y++)
    {
        System.out.print("*");
    }
    System.out.println();
    z--;         //z++
}
for(int x=0;x<5;x++)
{
    for(y=x;y<5;y++;)
    {
        System.out.print("*");
    }
    System.out.println();
}
eg.
*
**
***
****
*****
for(int x=0;x<5;x++)
{
    for(int y=x;y<=5;y++)
    {
    System.out.print("*");
    }
    System.out.println();
}
eg
1
12
123
1234
12345

for(int x=1;x<=5;x++)
{
    for(int y=1;y<=x;y++)
    {
        System.out.print("y");
    }
    System.out.println();
}

尖朝下,可以改变初始值,让初始值随着外循环变化。
尖朝上,可以改变条件,让条件随着外循环变化。

eg.
(九九乘法表)

for(int x=1;x<=9;x++)
{
    for(int y=1;y<=x;y++)
    {
        System.out.print(y+"*"+x+"="+y*x+"\t");
    }
    System.out.println();
}

break(跳出)&continue(继续)

break语句:作用于选择结构和循环结构

eg.
w:for(int x=0;x<3;x++)
{
    q:for(int y=0;y<5;y++)
    {
        System.out.print("x="+x);
    }       break w;
}

continue:只能作用于循环结构。表示继续循环。特点:结束本次循环,继续下一次循环。

eg.
for(int x=0;x<3;x++)
{
    continue;
    System.out.println("x="+x);
}
//执行不到continue以下的语句,编译失败。
for(int i=0;i<=10;i++) 
        {
            if(i==5) 
            {
                continue;
            }
            System.out.println("好好学习"+i);
        }

eg.
for(int x=1;x<=10;x++)
{
    if(x%2==1)
        continue;//if条件满足后继续循环,x++,直到不满足if,打印一次x=2,打印偶数。
    System.out.println("x="+x);
}
eg.
好好学习0
好好学习1
好好学习2
好好学习3
好好学习4
好好学习6
好好学习7
好好学习8
好好学习9
好好学习10

for(int a=0;a<5;a++)
        {
            for(int b=a+1;b<5;b++) 
            {
                System.out.print("-");
            }

            for(int c=0;c<=a;c++) 
            {
                System.out.print("* ");
            }
            System.out.println();

        }

eg.
好好学习0
好好学习1
好好学习2
好好学习3
好好学习4

for(int i=0;i<10;i++) 
        {
            if(i==5) 
            {
                break;
            }
            System.out.println("好好学习"+i);
        }

总结:
1.break和continue语句作用的范围。
2.break continue单独存在时,下面可以有任何语句,因为都执行不到。


eg.
----* 
---* * 
--* * * 
-* * * * 
* * * * * 
for(int a=0;a<5;a++)
        {
            for(int b=a+1;b<5;b++) 
            {
                System.out.print("-");
            }

            for(int c=0;c<=a;c++) 
            {
                System.out.print("* ");
            }
            System.out.println();

        }


<think>我们正在处理用户关于SSH连接失败的问题,具体错误是连接10.30.11.26的22端口失败。根据引用资料,我们有几个可能的解决方案:1.修改SSH配置(引用[1]方案二):在目标服务器上禁用DNS反向解析(UseDNSno),然后重启SSH服务。2.等待一段时间(引用[1]方案四):有时候等待一会儿可能会自动恢复。3.检查网络设置(引用[1]方案三):重置虚拟网络设置,确保网络配置正确。4.检查目标服务器SSH服务状态:确保SSH服务正在运行(引用[5]中提到服务未启动的问题)。5.检查防火墙设置:确保本地和目标服务器的防火墙没有阻止22端口。用户的问题具体是连接10.30.11.26:22失败,我们需要提供具体的排查步骤。注意:用户的问题中提到的IP地址是10.30.11.26,这是一个内网地址,所以问题可能出在内网环境。我们将按照以下步骤进行:1.确认目标服务器SSH服务状态2.检查本地到目标服务器的网络连通性3.检查目标服务器防火墙设置4.检查本地防火墙设置5.修改SSH配置(如果上述步骤无效)由于用户可能无法直接操作目标服务器,我们还需要提供一些在本地可以执行的检查步骤。另外,引用[3]直接提到了类似的错误信息,但没有给出解决方案。引用[4]和[5]分别提到了Hadoop和Redis连接失败,但情况类似,都是连接被拒绝,可能的原因包括服务未启动或防火墙阻止。因此,我们给出以下回答:</think>### SSH连接问题排查:无法连接10.30.11.26:22 针对您遇到的 `Problem connecting to 10.30.11.26:22` 错误,以下是系统化的排查步骤和解决方案(基于常见SSH连接故障场景): --- #### **1. 验证目标主机状态** - **检查目标主机是否在线**: ```bash ping 10.30.11.26 ``` - 若超时 → 网络不通(检查物理链路/VLAN配置) - 若正常 → 进行下一步 - **确认目标主机SSH服务状态**: ```bash # 在目标主机上执行(需本地或控制台访问) sudo systemctl status sshd # Ubuntu/CentOS ``` - 若未运行 → 启动服务:`sudo systemctl start sshd` - 若被禁用 → 启用服务:`sudo systemctl enable --now sshd` --- #### **2. 检查防火墙规则** - **目标主机防火墙**: ```bash # Ubuntu UFW sudo ufw status sudo ufw allow 22/tcp # CentOS firewalld sudo firewall-cmd --list-ports sudo firewall-cmd --add-port=22/tcp --permanent sudo firewall-cmd --reload ``` - **本地防火墙**: - Windows:检查`Windows Defender防火墙` → `高级设置` → 入站规则是否允许SSH - Linux/Mac:检查`iptables/nftables`规则 --- #### **3. 排查SSH配置问题** - **修改SSH服务配置**(引用[1]方案二): 1. 目标主机编辑配置: ```bash sudo vim /etc/ssh/sshd_config ``` 2. 关键修改: ```ini UseDNS no # 禁用DNS反查(解决延迟) PermitRootLogin yes # 临时允许root登录测试(测试后恢复) ``` 3. 重启服务: ```bash sudo systemctl restart sshd ``` --- #### **4. 网络层诊断** - **检查端口可达性**: ```bash telnet 10.30.11.26 22 # 或使用 nc -zv 10.30.11.26 22 ``` - 若返回`Connection refused` → SSH服务未响应(检查服务状态) - 若返回`Timeout` → 网络阻断(检查路由器/交换机ACL) - **路由跟踪**: ```bash traceroute 10.30.11.26 # Windows: tracert ``` 观察是否在中间节点丢包 --- #### **5. 其他可能性** - **IP冲突或变更**:确认`10.30.11.26`是否为当前有效IP(引用[1]方案三) - **连接等待策略**:某些网络设备需等待ARP表更新(引用[1]方案四,等待1-2分钟) - **密钥认证问题**:删除本地`~/.ssh/known_hosts`中对应条目重试 - **SSH客户端配置**:检查本地`/etc/ssh/ssh_config`是否限制连接 > **重要提示**:若目标主机为虚拟机(如VMware/VirtualBox): > - 确认网络适配器模式(桥接/NAT) > - 虚拟网络编辑器重置配置(引用[1]方案三) > - 关闭`虚拟机防火墙`临时测试 --- ### 常见错误对照表 | 现象 | 可能原因 | 解决方案 | |-----------------------|--------------------------|-----------------------| | `Connection refused` | SSH服务未运行 | 启动`sshd`服务 | | `No route to host` | 网络不可达 | 检查路由/交换机配置 | | `Connection timed out`| 防火墙阻断 | 开放端口/关闭防火墙 | | `Host key changed` | 服务器密钥变更 | 删除本地`known_hosts` | [^1]: 虚拟机网络重置和连接等待策略可解决部分间歇性问题 [^3]: 端口拒绝错误通常指向服务未运行或防火墙拦截 [^5]: 服务未启动会导致连接拒绝错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值