2018-05-15 第九天

简介: 一、循环 loop 三for 循环接上篇 语法for(循环条件初始化 1 ; 循环条件 2 ; 迭代 3 ){ //循环体  4 }   解释for 的小括号中由2个分号切分成了3部分。
一、 循环 loop

for 循环(接上篇

语法:for(循环条件初始化 1 ; 循环条件 2 ; 迭代 3 ){

//循环体  4

}

 

解释:for 的小括号中由2个分号切分成了3部分。

 

执行过程:

1:循环条件初始化执行且仅执行一次。

2:判断循环条件是否成立,如果成立,那么执行循环体。然后执行迭代部分,然后再判断循环条件。

3:一旦循环条件不成立,那么立即结束循环。

==》 1,2,4,3,2,4,3,2,4,3,2(不成立)结束。

 

注意事项:

1:循环条件初始化执行且仅执行一次。

2:小括号中的两个分号是必不可少的。其他的三部分从语法层面上来讲,都可以没有。

3:如果循环条件这部分没有,那就代表循环条件永远成立。

4:如果初始化部分需要初始化多个变量,那么可以使用逗号分割,包括迭代部分亦然。

5:在 for 循环的小括号中定义的变量,只能在for 循环中使用。

 

例:

//水仙花数:在 100-999  之间有几个这样的数  : 该三位数的每一位的 三次幂  之和 等于该数自身  求这几个数是什么??

public class TestLoop2{

public static void main(String[] args){

int unit  = 0;

int decade = 0;

int hundred = 0;

for(int i = 999; i >= 100 ;i--){

unit = i%10;

decade = i/10%10;

hundred = i/100;

if(unit * unit * unit + decade * decade * decade + hundred * hundred * hundred == i){

System.out.println(i);

}

}

}

}

 

(四)循环语句的选择:

for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。

while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。

 

(五) break continue

break :意思是打断。在循环结构中,如果想跳出循环体,结束整个循环结构可以使用break语句。

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。即只结束本次循环,而不是终止整个循环的执行。

 

二、 嵌套循环

嵌套循环的概念:循环体中包含了其他的循环。

 

特点:外层循环迭代一次,内层循环执行一遍。

 

1:

//打印,矩形,平行四边形,等腰三角形

public class TestDoubleLoop{

public static void main(String[] args){

// for(int i=0;i<5;i++){

// for(int j=0;j<5;j++){

// System.out.println("i = "+i + "\tj = "+j);

// }

// }

//打印,矩形,平行四边形,等腰三角形

//    ************  i== 0

//   ************   i== 1

//  ************   i== 2

// ************   i == 3

// 打印的空格的数量  高度 height-i-1

int width = 16;

int height = 10;

//外层循环控制打印多少行,以及每一行的末尾的换行符

for(int i = 0; i < height;i++){

//内层循环控制打印一行的星号

for(int j = 0;j<width;j++){

System.out.print(" *");

}

System.out.print("\n");

}

System.out.print("\n");

//平行四边形

for(int i = 0; i < height;i++){

//用来控制每一行的空格的数量

for(int j = 0;j < height-i-1; j++){

System.out.print(" ");

}

//内层循环控制打印一行的星号

for(int j = 0;j<width;j++){

System.out.print(" *");

}

System.out.print("\n");

}

System.out.print("\n");

//等腰三角形

//    *  i== 0  1  2*i+1

//   ***   i== 1  3

//  *****   i== 2   5

// *******   i == 3

for(int i = 0; i < height;i++){

//用来控制每一行的空格的数量

for(int j = 0;j < height-i-1; j++){

System.out.print(" ");

}

//内层循环控制打印一行的星号

for(int j = 0;j<(i<<1)+1;j++){

System.out.print("*");

}

System.out.print("\n");

}

}

}

 

2:

//求2--100以内的所有的素数:

//素数:只能被1 和 自身整除的数。又称为质数。 合数

public class TestPrime{

public static void main(String[] args){

//遍历2--100之间的所有的数type1

for(int i = 2;i <= 100; i++){

//对每一个i 进行逐个的判断,是否满足 素数的条件,满足 打印即可。

// 对当前的 i 进行取余运算,对[2~ i-1]区间的所有的数进行逐个取余,如果都有余数 那么i 就是素数

int counter1 = 0;//记录内层循环循环了多少次

int counter2 = 0;//记录条件满足了多少次

for(int j = 2; j<= i-1 ;j++){

//内层循环中,遍历一遍,所有的j 必须都满足下面的条件 i 才是素数

if(i % j != 0){

counter2 ++;

}

counter1 ++;

}

//判断 counter1 是否  等于counter2

if(counter1 == counter2){

System.out.println(i);

}

}

//遍历2--100之间的所有的数type2

for(int i = 2;i <= 100; i++){

//对每一个i 进行逐个的判断,是否满足 素数的条件,满足 打印即可。

// 对当前的 i 进行取余运算,对[2~ i-1]区间的所有的数进行逐个取余,如果都有余数 那么i 就是素数

boolean flag = false;

for(int j = 2; j<= i-1 ;j++){

if(i % j == 0){

flag = true;

break;

}

}

//如果flag 还是false 说明i 是素数 没有一个j 被i 除尽

if(false == flag){//容易理解的方案

//if(!flag){//最优的方案。

System.out.println(i);

}

}

}

}

3:百钱买白鸡

//今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?

public class TestDoubleLoop3{

public static void main(String[] args){

for(int i = 0;i<=20;i++){//公鸡

for(int j = 0;j<= 33;j++){//母鸡

for(int k = 0;k<=300;k++){//小鸡

if( i+j+k == 100 && i*5 + j * 3 + k/3 == 100 && k%3 == 0){

System.out.println("公鸡数量:"+i+ "\t母鸡数量:"+j+"\t小鸡数量:"+k);

}

}

}

}

for(int i = 0;i<=20;i++){//公鸡

for(int j = 0;j<= 33;j++){//母鸡

int k = 100 -i - j;//小鸡

if(i*5 + j * 3 + k/3 == 100 && k%3 == 0){

System.out.println("公鸡数量:"+i+ "\t母鸡数量:"+j+"\t小鸡数量:"+k);

}

}

}

}

}

 

4:

//九九乘法表

public class TestNine{

public static void main(String[] args){

//外层循环控制行数

for(int i = 1;i<=9;i++){

//内层循环控制一行的显式内容

for(int j = 1;j<=i; j++){

int num = j*i;

System.out.print(j+"*"+i+"="+num+"; ");

}

System.out.println();

}

}

}

 

三、标号:了解

解释:break 和 continue 后都可以跟标号。

可以通过break 后面跟标号,实现跳出标号对应的那一层循环。

可以通过continue 后面跟标号,实现 跳到对应层的循环的迭代处(for),while do-while 循环条件判断处。

 

例://标号

public class TestLabel{

public static void main(String[] args){

//外层循环控制行数

//定义标号

label1 : for(int i = 1;i<=9;i++){

//内层循环控制一行的显式内容

for(int j = 1;j<=i; j++){

int num = j*i;

System.out.print(j+"*"+i+"="+num+"; ");

if(j == 7)break label1;

}

System.out.println();

}

}

}

 

四、方法

方法的定义:

必要性:1:通过方法可以实现重复代码的简化,和代码的复用。

2:将某些功能代码封装到一个方法的内部,实现了功能的模块化,方便后期的维护和修改。

 

语法:[方法的修饰符 public static]  方法的返回类型  方法名(参数列表){

//方法体

}

 

1:[方法的修饰符 public static]:可选的部分,不是必须的。还有其他修饰符。

 

2:方法的返回类型:

可以是  void(空)或者java 支持的任意类型(十一种

代表着方法 执行完毕之后 是否会产生一个结果。

如果一种方法只是实现了一段功能,不需要得到一个结果。那么该方法的返回类型 必须是void。

如果一种方法,执行完毕之后希望得到一个结果数据。这个时候方法的返回类型就不能是void了。必须数据类型要与结果的数据类型兼容。

 

3:方法名:通过名字来访问该方法的功能。还要通过名字来显示该方法实现了什么样的功能。

   方法名也是一类标识符。命名规范和局部变量一致,首字符小写,遵循驼峰命名法。

 

4:参数列表:又称为形参列表

表达的意思:在使用方法的时候,需要传递给方法的一些动态的数据,表达了方法在使用的时候的一种需求。

public static void printStarRect(int width) :在使用该方法的时候,需要给方法传递一个 int 类型的值。

参数列表的格式:

1:参数列表可以为空。()

2: 需要传递的数据可以是任意个,类型也是任意类型。(数据类型 变量名1, 数据类型 变量名2, 数据类型 变量名3......)

 

5:方法体:功能实现的主体部分。

return:如果方法的返回类型是 void。那么可以在方法中使用“return;

作用:直接结束方法。方法直接返回。

如果方法的返回类型 不是void ,那就是java支持的某种类型。那么该方法必须 使用 return 后面跟着一个想要得到的结果。

public static int max(int a,int b){

int max = a > b ? a : b;

return max;

}

 

6:把方法的名字 + 参数列表组合 称之为方法的签名 signature。

在一个类的内部方法的签名必须唯一。

 

注意问题:

1:方法不能被定义到任意的其他的方法的内部去。

2:所有的方法都必须在某一个类的内部。必须被最外层的大括号包围。

3:如果想使用方法提供的功能。方法的调用。那么该方法必须直接的或者间接的被 main 调用。

4:方法的调用的格式语法:方法名+参数列表(实参列表)。

例:

//打印不同边长的星号正方形。

public class TestMethod1{

public static void main(String[] args){

int width = 7;

//打印边长是7

printStarRect(7);

width = 10;

//打印边长是10

printStarRect(width);

width = 21;

//打印边长是10

printStarRect(width);

int max = max(1,2);

System.out.println(max);

System.out.println(max(1,2,3));

//不允许

//System.out.println(printStarRect(1));

test();

System.out.println(randomNumberByRange(10,12));

}

//自定义方法,实现打印指定宽度的星号正方形

//方法名是一类标识符,和局部变量的命名规范一致,

//将重复的代码抽取出来,形成一个独立的功能模块  方法 method 将抽取的代码的变化的量作为方法的参数列表。

public static void printStarRect(int width){

if(width > 20){

return;

}

for(int i = 0;i < width ;i++){

for(int j=0;j<width; j++){

System.out.print(" *");

}

System.out.println();

}

System.out.println();

}

//自定义方法。功能是得到某一个int区间的随机值。

//涉及到范围,都是前闭后开 包含小的,不包含大的。

public static int randomNumberByRange(int min, int max){

return (int)(Math.random()*(max-min)+min);

}

//定义方法。对于任意的两个int 类型的值,求两个值 中的比较大的值。

//

public static int max(int a,int b){

if(a > b)

return a;

return b;

}

public static int max(int a,int b,int c){

int max = a > b ? a : b;

max = max > c ? max : c;

return max;

}

//对任意的int 类型的值,求该值的绝对值

public static int abs(int a){

return a > 0 ? a : -a;

}

//求指定概率【0.0-1.0】的事件 是否发生

public static boolean isHappened(double percent){

return Math.random() < percent;

}

public static void test(){

int counter = 0;

for(int i=0;i<1000;i++){

boolean bool = isHappened(0.3);

if(bool)counter ++;

}

System.out.println(counter);

}

}

 


316b531d9415e44320c6a978f1b95dbdac0f143b

目录
相关文章
|
3天前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
157963 24
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
|
5天前
|
人工智能 API 网络安全
用DeepSeek,就在阿里云!四种方式助您快速使用 DeepSeek-R1 满血版!更有内部实战指导!
DeepSeek自发布以来,凭借卓越的技术性能和开源策略迅速吸引了全球关注。DeepSeek-R1作为系列中的佼佼者,在多个基准测试中超越现有顶尖模型,展现了强大的推理能力。然而,由于其爆火及受到黑客攻击,官网使用受限,影响用户体验。为解决这一问题,阿里云提供了多种解决方案。
17036 37
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
5天前
|
并行计算 PyTorch 算法框架/工具
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
1311 8
|
13天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
3417 117
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
8天前
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
5天前
|
人工智能 自然语言处理 程序员
如何在通义灵码里用上DeepSeek-V3 和 DeepSeek-R1 满血版671B模型?
除了 AI 程序员的重磅上线外,近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。
934 14
|
12天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
1938 9
阿里云PAI部署DeepSeek及调用
|
9天前
|
人工智能 数据可视化 Linux
【保姆级教程】3步搞定DeepSeek本地部署
DeepSeek在2025年春节期间突然爆火出圈。在目前DeepSeek的网站中,极不稳定,总是服务器繁忙,这时候本地部署就可以有效规避问题。本文以最浅显易懂的方式带读者一起完成DeepSeek-r1大模型的本地部署。
|
12天前
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。

热门文章

最新文章