第1关:两整数的四则运算
任务描述
本关任务:从键盘接收2个整数,a,b。计算a+b,a-b,a*b,a/b的值并打印输出
相关知识
java 中 Scanner 输入
例子:接收一个整数并打印输出
import java.util.Scanner;
public class Main{
public static void main(String[] args){
// System.out.println("请输入一个整数");
Scanner sc = new Scanner(System.in);
int nume = sc.nextInt();
System.out.println(nume);
}
}
nextInt() 方法是将输入信息的下一个标记扫描为一个 int。
hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。 如果仍有元素可以迭代,则返回 true。
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收2个整数,a,b。计算a+b,a-b,a*b,a/b的值并打印输出
测试说明
平台会对你编写的代码进行测试:
测试输入:
13
36
预期输出:
a+b=49
a*b=468
a-b=-23
a/b=0
开始你的任务吧,祝你成功!
package step1;
import java.util.Scanner;
public class Arithmetic2Num {
public static void main(String[] args) {
// ---------------------Begin------------------------
Scanner sc=new Scanner(System.in);
System.out.println();
int a=sc.nextInt();
System.out.println();
int b=sc.nextInt();
int sum=a+b;
int sub=a-b;
int ch=a*b;
int div=a/b;
System.out.println("a+b="+sum);
System.out.println("a*b="+ch);
System.out.println("a-b="+sub);
System.out.println("a/b="+div);
// ---------------------End------------------------
}
}
第2关:打印三角形
任务描述
本关任务:编写一个能打印n行三角形的小程序。
相关知识
为了完成本关任务,你需要掌握:1.如何获取输入数据,2.循环的使用。
1.如何获取输入数据:Scanner
Scanner类简介:
1、使用前需导包:import java.util.Scanner;
2、构造Scanner类对象,它附属于标准输入流System.in。
Scanner sc =new Scanner(System.in);
3、常用的next()方法系列:
nextInt():输入整数
nextLine():输入字符串
nextDouble():输入双精度数
next():输入字符串(以空格作为分隔符)。
2.do…while循环
2.1 基本格式
do {
循环体语句;
}while((判断条件语句);
2.2扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
注意死循环:
A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
B:两种最简单的死循环格式
while(true){...}
for(;;){...}
3.for循环的使用
通俗的理解,遍历数组就是:把数组中的元素都看一遍。
示例如下:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
执行初始化语句
执行判断条件语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
执行循环体语句
执行控制条件语句
回到B继续
注意事项
判断条件语句的结果是一个boolean类型
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
4.while循环语句格式
4.1基本格式
while(判断条件语句) {
循环体语句;
}
4.2扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
5.循环结构(for循环和while循环的区别):
for循环语句和while循环语句可以等价转换,但还是有些小区别的
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确操作
编程要求
根据提示,在右侧编辑器补充代码,打印正三角形。
测试说明
平台会对你编写的代码进行测试:
测试输入:无
预期输出:
开始你的任务吧,祝你成功!
package step2;
import java.util.Scanner;
public class PosTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//定义输入的行数:
int n = scanner.nextInt();
// ---------------------Begin------------------------
for (int x=1;x<=n;x++){
for(int y=n;y>x;y--){
System.out.print(" ");
}
for (int y=1;y<=x;y++){
System.out.print("*");
}
for(int y=1;y<x;y++){
System.out.print("*");
}
System.out.println();
}
// ---------------------End------------------------
}
}
第3关:循环之倒三角形
任务描述
本关任务:编写一个能打印输出n行的倒三角形
相关知识
为了完成本关任务,你需要掌握:1.如何获取输入数据,2.循环的使用。
1.如何获取输入数据:Scanner
Scanner类简介:
1、使用前需导包:import java.util.Scanner;
2、构造Scanner类对象,它附属于标准输入流System.in。
Scanner sc =new Scanner(System.in);
3、常用的next()方法系列:
nextInt():输入整数
nextLine():输入字符串
nextDouble():输入双精度数
next():输入字符串(以空格作为分隔符)。
2.do…while循环
2.1 基本格式
do {
循环体语句;
}while((判断条件语句);
2.2扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
注意死循环:
A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
B:两种最简单的死循环格式
while(true){...}
for(;;){...}
3.for循环的使用
通俗的理解,遍历数组就是:把数组中的元素都看一遍。
示例如下:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
执行初始化语句
执行判断条件语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
执行循环体语句
执行控制条件语句
回到B继续
注意事项
判断条件语句的结果是一个boolean类型
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
4.while循环语句格式
4.1基本格式
while(判断条件语句) {
循环体语句;
}
4.2扩展格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
5.循环结构(for循环和while循环的区别):
for循环语句和while循环语句可以等价转换,但还是有些小区别的
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确操作
编程要求
根据提示,在右侧编辑器补充代码,编写一个能打印输出n行的倒三角形
测试说明
平台会对你编写的代码进行测试:
测试输入:4
预期输出:
*******
*****
***
*
开始你的任务吧,祝你成功!
package step3;
import java.util.Scanner;
public class NegTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//定义输入的行数:
int n = scanner.nextInt();
// ---------------------Begin------------------------
for(int x=1;x<=n;x++){
for(int y=1;y<x;y++){
System.out.print(" ");
}
for(int y=n;y>x;y--){
System.out.print("*");
}
for(int y=n;y>=x;y--){
System.out.print("*");
}
System.out.println();
}
// ---------------------End------------------------
}
}
第4关:水仙花数
任务描述
本关任务:从键盘接收2个整数a和b,输出a与b范围内的水仙花数。
相关知识
1.水仙花数
水仙花数是指:一个n位数( n23 ),它的每个位上的数字的n 次所谓的水仙花数是指:一个n位数(N23),它的每个位上的数字的n次幂之和等于它本身幂之和等于它本身。
例如:153,370,371,407等都是水仙花数,就拿153来说,153 =111 +555 +333. 幂之和等于它本身.例如153,370,371,407等都是水仙花数,就拿153来说,153=111+55+33。
样例:
public class ShuiXianHua {
public static void main(String[] args) {
//1.遍历所有的三位数
for(int i=100;i<=999;i++){
if(isAim(i)){//调用方法如果是水仙花数,就打印
System.out.println(i);
}
}
}
//例 153
public static boolean isAim(int a){
int x=a/100;//结果取整 分解出百位数1
int y=a/10%10;//分解出十位数 除10取证后为15 %10取余后为5
int z=a%10;//直接对10取余得3
if(a==x*x*x+y*y*y+z*z*z){//判断是否为水仙花数
return true;
}
return false;
}
}
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收2个整数a和b,输出a与b范围内的水仙花数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
200
预期输出:
1
153
测试输入:
2
6
预期输出:
2~6范围内无水仙花数!
开始你的任务吧,祝你成功!
package step4;
import java.util.Scanner;
public class narcissisticNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//获取起始范围
int i = scanner.nextInt();
//获取终止范围
int j = scanner.nextInt();
// ---------------------Begin-----------------------
int p=0;
for( ;i<=j;i++){
int x=i/100;
int y=i/10%10;
int z=i%10;
if(i==x*x*x+y*y*y+z*z*z){
System.out.println(i);
p++;
}
}
if(p==0){
System.out.println(+(i-j+1)+"~"+j+"范围内无水仙花数!");
}
// ---------------------End------------------------
}
}
第5关:a与b之间的素数
任务描述
本关任务:从键盘接收2个整数a和b,输出a与b范围内的所有素数。
相关知识
1.素数
素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”
2.for循环
基本格式:
for(条件表达式1;条件表达式2;条件表达式3)
{
语句块;
}
编程要求
根据提示,在右侧编辑器补充代码,完成从键盘接收2个整数a和b,输出a与b范围内的所有素数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
25
预期输出:
1到25之间的素数有:
1 2 3 5 7 11 13 17 19 23
测试输入:
20
20
预期输出:
20到20之间的素数有:
开始你的任务吧,祝你成功!
package step5;
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// ---------------------Begin------------------------
int a = scan.nextInt();
int b = scan.nextInt();
System.out.println(a + "到" + b + "之间的素数有:");
for (int i = a; i <= b; i++) {
if (isPrime(i)) {
System.out.print(i + " ");
}
}
}
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
// ---------------------End------------------------
}
}
第6关:余X的整数
任务描述
本关任务:从键盘接收3个整数a、b和c,输出 [a,b] 内满足余c等于0的所有整数。
相关知识
1.余数
在java运算中有时会出现对一个整数取余操作,首先复习一下小学学过的除法公式:
除数 ÷ 被除数 = 商
如果没有被整数就会出现余数,例:10 ÷ 3 = 3 余数为 1
在java运算中,取余符号是 %
编程要求
根据提示,在右侧编辑器补充代码,完成从键盘接收3个整数a、b和c,输出 [a,b] 内满足余c等于0的所有整数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
10
20
3
预期输出:
12
15
18
开始你的任务吧,祝你成功!
package step6;
import java.util.Scanner;
public class LeftXnumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ---------------------Begin------------------------
int a=scanner.nextInt();
int b=scanner.nextInt();
int c=scanner.nextInt();
for(int i=a;i<=b;i++){
if(i%c==0){
System.out.println(i);
}
}
// ---------------------End------------------------
}
}
第7关:求解1元2次方程
任务描述
本关任务:从键盘接收3个double数据对应方程系数a、b、c,编写一个能求解1元2次方程的程序。
方程形式:aX^2+bX+c=0
tips:
若有解则结果保留2位小数。
相关知识
1. 公式法求解1元2次方程
1.1 求出根的判别式
一元二次方程中根的判别式为△=b2—4ac。
1.2 判断根的个数
当△>0时,方程有两个不同的根;当A=0时,方程有两个相同的根;当△<0时,方程无根。
1.3 代入公式求根
当△>0时,x1=(-b + Math.sqrt(delta)) / (2a),x2=(-b - Math.sqrt(delta)) / (2a)
当△=O时,x1=x2=(-b + Math.sqrt(delta)) / (2*a)
当△<0时,方程无根
编程要求
根据提示,在右侧编辑器补充代码,从键盘接收3个double数据对应方程系数a、b、c,编写一个能求解1元2次方程的程序。若有解则结果保留2位小数。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3
4
5
预期输出:
此方程无解
测试输入:
14
55
2
预期输出:
方程有两个解:x1=-0.04 x2=-3.89
开始你的任务吧,祝你成功!
package step7;
import java.util.Scanner;
public class SolveEquations {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ---------------------Begin------------------------
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
double delta=b*b-4*a*c;
if(delta<0){
System.out.println("此方程无解");
}else if(delta==0){
double x=-b/(2*a);
System.out.printf("方程有唯一解:x=%.2f",x);
}else{
double x1 = (-b+Math.sqrt(delta))/(2*a);
double x2 = (-b-Math.sqrt(delta))/(2*a);
System.out.printf("方程有两个解:x1=%.2f x2=%.2f",x1,x2);
}
// ---------------------End------------------------
}
}