JAVA实验一--语言基础

第1关:Java 循环结构之 for 循环


任务描述

使用本关所学知识,实现一个自然数N的阶乘。

相关知识

本关我们来学习Java中最常用的循环语句——for循环,for循环的功能和while循环大致相同,只是写法上有区别。如下:

具体使用方式:

 
  1. for(初始化语句;条件;控制循环次数){
  2. <若干语句>
  3. }

输出:

做了1个俯卧撑
做了2个俯卧撑
做了3个俯卧撑
做了4个俯卧撑
做了5个俯卧撑

编程要求

是不是会用了呢?来试试吧,在右侧编辑器Begin-End中填充代码,用for循环实现一个自然数N的阶乘。
例如:给定一个数数N=5,那么它的阶乘为1*2*3*4*5。 效果图如下:

测试说明

平台会对你编写的代码进行测试,若与预期输出一致,则算通关。


开始你的任务吧!

代码:

import java.util.Scanner;

public class HelloWorld {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("请给定一个自然数N:");

        int N = sc.nextInt();//获取输入的整数N

        int sum = 1;

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

            sum*=i;

        }          

        System.out.println("自然数N的阶乘为" + sum);

    }

}

第2关:for循环的进阶使用-嵌套循环


任务描述

本关需要你编写一个小程序。能打印出两个三角形。

相关知识

相信你经过上一关你对于循环的嵌套已经比较熟悉了,本关要实现的效果就是将上一关的矩形切掉了一半,那应该怎么实现呢?
可以发现,要打印出三角形,第一次要打印一颗*第二次两颗**依次类推,这有什么规律呢,相信你已经明白了。
对于本关你可以这样尝试:

  1. 可以先尝试打印出一个3*3的正三角形,像这样;

  1. 然后把这个3*3的三角形改成10*10的正三角形;

  1. 最后再尝试打印一个10*10的倒三角形。

把问题拆分一个个的小部分,这样子是不是就没有那么难了呢?

编程要求

请在右侧编辑器Begin-End中填充代码,实现两个三角形的打印输出,效果图如下:

测试说明

平台会对你编写的代码进行测试,若与预期输出一致,则算通关。


开始你的任务吧,good luck!

代码:

package step2;

public class Test {

    public static void main(String[] args) {

        /*****start*****/

        

        //在这里打印出正三角形 

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

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

                System.out.print("*");

            }

            System.out.println();

        }

        System.out.println("——————————我是华丽的分界线——————————");

        //在这里打印出倒三角形

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

            for(int j=10;j>=i;j--){

                System.out.print("*");

            }

            System.out.println();

        }

        

        

        

        

        /*****end*****/

    }

}

第3关:冒泡排序


任务描述

本关任务:使用冒泡排序实现数组的升序排序(从小到大)。

相关知识

冒泡排序

看完上图,相信你已经能明白冒泡排序的原理了。

将序列当中的左右元素,依次比较,如果左边的元素大于右边元素则交换位置,保证右边的元素始终大于左边的元素;( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;)对序列当中剩下的n-1个元素再次执行步骤1。对于长度为n的序列,一共需要执行n-1轮比较。

在代码中实现一轮比较:

输出结果:[5, 8, 0, 2, 6, 9]

编程要求

在编辑器Begin-end处填充代码,使用冒泡排序对数组arr进行升序排序,最后输出排序之后数组arr中的数据。

测试说明

预期输入:6958026
预期输出:[0, 2, 5, 6, 8, 9]

预期输入:4312130
预期输出:[0, 3, 12, 13]


开始你的任务吧,祝你成功!

代码:

package step3;

import java.util.Arrays;

import java.util.Scanner;

public class HelloWorld {

    

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        //动态创建数组

        int[] arr = new int[sc.nextInt()];

        for(int i = 0 ; i< arr.length ; i++){

            arr[i] = sc.nextInt();

        }

        /********** Begin **********/

    for(int j=1;j<arr.length;j++){

        for(int i=0;i<arr.length-1;i++){

        if(arr[i]>arr[i+1]){

            int temp=arr[i];

            arr[i]=arr[i+1];

            arr[i+1]=temp;

        }

    }}

    System.out.println(Arrays.toString(arr));

        /********** End **********/

    }

}   

第4关:substring()方法与indexOf()方法的使用 - 姓名


任务描述

成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务。班主任的电脑不幸中了病毒,有一个文件变成了一堆乱码,但是班主任仔细查看了文件后发现,在这堆毫无意义的乱码中,还是有零散的班上同学的姓名穿插其中,现在班主任让小明将其位置找出来。

相关知识

substring()方法

String类中有两个substring()方法,第一种如下:

 
  1. String str;
  2. str.substring(int start)

其中,start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束位置的数据。

例如:

 
  1. String str = "hello word!";
  2. System.out.println(str.substring(1));
  3. System.out.println(str.substring(3));
  4. System.out.println(str.substring(6));

执行以上代码,结果如下:

 
  1. ello word!
  2. lo word!
  3. ord!

如果start大于字符串的长度,将会抛出越界异常。

第二种substring()方法:

 
  1. String str;
  2. str.substring(int start, int end)

其中,start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据。

例如:

 
  1. String str = "hello word!";
  2. System.out.println(str.substring(1, 4));
  3. System.out.println(str.substring(3, 5));
  4. System.out.println(str.substring(0, 4));

执行以上代码,结果如下:

 
  1. ell
  2. lo
  3. hell

indexOf()方法

indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1,需要注意的是原字符串的第一个字母的位置是0,请看示例:

 
  1. String str = "abcdefghijklmnabc";
  2. System.out.println(str.indexOf("c")); //结果为2,为字符"c"第一次出现的位置
  3. System.out.println(str.indexOf("x")); //结果为-1,没有找到字符"x"

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • data变量为乱码文件的文本数据,由命令行读入;

  • name变量为需要查找的姓名,由命令行读入;

  • 你将被要求输出若干行,每一行为查找到的姓名的位置。

评测说明

平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

测试输入:
我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李四
李四
预期输出:
2
8
17
35
47


专注于你的目标,做积极的人、相信就在你身边。不要让其他事情分心了你的目标,这些都无助于实现你的目标。

开始你的任务吧,祝你成功。

代码:

package step4;

import java.util.Scanner;

public class NameSearch {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        /********** Begin *********/

String data=scanner.nextLine();

String name=scanner.nextLine();

int count=0;

while(data.indexOf(name)!=-1){

    System.out.println(data.indexOf(name)+count);

    count+=data.indexOf(name)+name.length();

    data=data.substring(data.indexOf(name)+name.length());

}


 

        /********** End *********/

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值