提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
在写了几道力扣题目发现,上面题目都是设计到算法和数据结构,所有在前天又去大概看了下算法还有数据结构这两块的知识,但是觉得有些许吃力,不明白在哪些场景去使用哪种数据结构或者是好的算法,在咨询老师之后还是准备加固一些基础知识,在深入到项目之前,就开始着手数据结构和算法。
一、双重for循环
今天做了一道需要使用双重for循环的题目,但是一直运行不到预期的结果,后来发现对于它的认知出了错误。
for(int i =a;i<=b;i++){ boolean flag=true;//信号位,假设该数为素数 for(int j=2;j<i/2;j++){ if(i%j==0){ flag=false; break;//flag为false,即该数为合数,停止内层循环 } }
在这个地方我一直误以为两层循环是从上到下顺序执行一遍又返回外层循环,也就是2%2,3%3,4%4......;后来就一直想不出来怎么解决;后来查了下资料才知道,外层循环执行一次后,内层循环要循环完才退出(可以加break强制退出),之后就成功的运行出来了。
二、源代码
代码如下(示例):
import java.util.Scanner;
public class Practice2 {
public static void Find(int a , int b) {//寻找任意范围内的质数
if (b > a) {
for(int i =a;i<=b;i++){
boolean flag=true;//信号位,假设该数为素数
for(int j=2;j<i/2;j++){
if(i%j==0){
flag=false;
break;//flag为false,即该数为合数,停止内层循环
}
}
if(flag){
System.out.print(i +",");
}
}
}
}
public static void main(String args[]){
int a,b;
Scanner in = new Scanner(System.in);
System.out.println("请从哪个数开始找之后的质数:");
a = in.nextInt();
System.out.println("请输入到哪个数结束:");
b = in.nextInt();
Find(a, b);
}
}
三、方法
在解决问题时,如果全部功能代码都放在了main方法中,将会看起来很杂乱,复用性也极大的降低了,所以方法的使用就显得十分作用,也可以理解为想要一个什么样的功能,即可创建一个方法来实现这个功能,然后直接在main方法中调用即可。
package Methd; import java.util.Scanner; public class Demo4 { public static int FindMax(int []arry){ //寻找数组中最大的元素值 int max = arry[0]; for(int i=1;i<arry.length;i++){ if(max<arry[i]){ max = arry[i]; } } return max; } public static int Quer(int []arry , int target) { //查询目标值所在的元素下标 for(int i=0;i<arry.length;i++){ if(arry[i]==target){ return i; } } return -1; } public static void main(String args[]){ Scanner in = new Scanner(System.in); int arry[] = new int[5]; int input; System.out.println("向数组中输入五个数据:"); for(int i=0;i<arry.length;i++){ arry[i] = in.nextInt(); } System.out.println("数组中最大值为:" +FindMax(arry)); System.out.println("输入想要查找的元素:"); input = in.nextInt(); int re = Quer(arry,input); if(re == -1){ System.out.println("没有该元素"); }else System.out.println("该元素索引为: " + re); } }
在方法里面要注意的就是return关键字,在前面定义方法时,如果是void,则不需要返回值;如果定义了int或者其他类型,则必须返回一个相同类型的数据;同时,在碰到return时,也会立即跳出并结束当前方法的执行。
四、总结
虽然之前就学完了java的一些基本语法还有操作,但是这几天又回过头来再次深入学习,还是会有很多新的收获,所以按时的回头看看在学习中还是非常的重要的,代码人一步一个脚印,一起成为代码大神。