JAVA头歌实训 Java编程基础进阶

本文介绍了Java编程中处理整数运算(加减乘除),如两整数四则运算,以及使用Scanner接收用户输入。后续内容涉及打印三角形、倒三角形、水仙花数检测、素数查找和1元2次方程求解,展示了基础编程技能和数学应用。
摘要由CSDN通过智能技术生成

第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------------------------

    }
}

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值