本专栏开启,目的在于帮助大家更好的掌握学习Java
,特别是一些Java学习者
难以在网上找到系统地算法学习资料帮助自身入门算法,同时对于专栏内的内容有任何疑问都可在文章末尾添加我的微信给你进行一对一的讲解。
但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
算法的学习肯定不能缺少总结,这里我推荐大家可以到高校算法社区将学过的知识进行打卡,以此来进行巩固以及复习。
学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。
Java
语言的输入输出,涉及到IO流相关的知识,这对于初学者来说并不友好。所以对于学习来说,大家更应该注重与使用,暂时并不需要深入了解其底层原理。我们以最基础的
a
+
b
a+b
a+b 问题来帮助大家入门
【题1】给定两个正整数 a a a和 b b b,请你输出 a + b a+b a+b的结果。题目保证 a , b ≤ 100000 a,b\leq 100000 a,b≤100000。
题目难度:⭐️
运用了Java最基础的输入输出
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+b);
}
}
import
关键字是Java
的导包关键字Main
类,Java
万物皆以类生存,在OJ平台下使用Java
写算法题,主函数必须写在名为Main
的一个类下才能通过编译。Java
的主函数了Systm.in
是标准输入流,需要结合Scanner
使用,Scanner
提供了多种读取函数,这里
a
、
b
a、b
a、b都是int
类型,所以我们使用nextInt
函数。System.out
是标准输出流,可以直接使用,可以使用println
进行标准输出,也可以使用printf
进行格式化输出【题2】给定一个整数 t ( 1 ≤ t ≤ 1000 ) t (1\leq t\leq 1000) t(1≤t≤1000),然后给定 t t t 组数据,每次给定两个正整数 a a a和 b b b,请你输出 a + b a+b a+b的结果。题目保证 a , b ≤ 100000 a,b\leq 100000 a,b≤100000。
题目难度:⭐️
还是考察了Java
的基本输入与输出,同时由于是
t
t
t组测试数据,我们还需要使用到循环的知识,通常像这种多组测试数据,我们一般使用while
循环。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while (t-->0){
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+b);
}
}
}
while
循环,其余内容一致。while(expr){body}
是一个循环语句结构。expr
的含义是一个布尔表达式,如果为true
,则会执行一遍代码体body
内的代码,当为false
时结束循环。本题我们的
t
t
t每次自减1后执行一次循环,当其为0时结束循环,循环刚好进行了t
次。【题1】题目包含多组测试数据,每个数据给定两个正整数 a a a和 b b b,请你输出 a + b a+b a+b的结果。题目保证 a , b ≤ 100000 a,b\leq 100000 a,b≤100000。
题目难度:⭐️⭐️
Scanner
的另外一个函数hasNext()
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(a+b);
}
}
}
hasNext
,顾名思义,它会检测你的输入中是否还有下一个输入,如果有我们则会进入循环体,否则会结束循环。hasNext
,会一直处于输入状态,这时我们只需要主动按一下ctrl+d
即可结束。题目将会循环输入,每个数据给定两个正整数 a a a和 b b b,如果 a a a和 b b b的值都为0,则退出循环,否则请你输出 a + b a+b a+b的结果。题目保证 a , b ≤ 100000 a,b\leq 100000 a,b≤100000。
题目难度:⭐️
while
循环。import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (true){
int a=sc.nextInt();
int b=sc.nextInt();
if (a==0&&b==0) break;;
System.out.println(a+b);
}
}
}
while(true)
,表示一直进行循环a==0&&b==0
判断,如果为true
则break
跳出循环。&&
是逻辑运算符,当左右两边的表达式同时为true
它才会返回true
。break
是Java
的关键字,作用为跳出当前这层循环。要求实现一个函数
add
,传入两个int
类型的参数 a a a和 b b b,返回 a + b a+b a+b的结果。
Java
中对于函数
使用。这种格式是LeetCode
网站特有的OJ格式,不需要我们进行输入输出的操作。函数
不太理解,可以类比数学中的函数,自变量对于我们的参数,因变量则是我们的返回值。 要注意参数可能会有多个,而返回值只会有一个。public int add(int a, int b) {
return a + b;
}
public
是Java
中的权限关键词,加不加都可以。int
表示返回值类型,return
是我们需要返回的结果