第1关:求和
挑战任务
这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数位的累加,例如有两个数 15
,19
则 他们的数位和应该为:
1+5+1+6+1+7+1+8+1+9,结果为40。
你来帮他解决这个问题吧。
补充完善右侧代码区中的getSum(int num1,int num2)
函数,实现对两个数num1
和num2
的数位和相加,最后返回计算的结果即可。
注:num1
和num2
的值都在1-999
之间。
输入:15
19
输出:40
注意:
- 本关的具体评测代码由平台后台提供,你只需补充完善
getSum
函数,将计算结果作为返回值返回即可; - 本关共包含4个测试用例,需所有测试用例评测通过才能得分;
- 平台使用的Java版本为:
JDK8.0
。
开始挑战吧,祝你成功!
AcCode:
package step1;
public class Task {
public int getSum(int num1, int num2) {
/********** BEGIN **********/
int result = 0;
for(int i=num1;i<=num2;i++){
int k = i;
while(k!=0){
result+=k%10;
k=k/10;
}
}
return result;
/********** END **********/
}
}
第2关:文件查看器
挑战任务
参加“绿盟杯”竞赛的小红遇到一个问题,她想要编写代码实现一个文件查看器,要实现指定文件夹下所有文件以及文件夹目录结构的展示。
你来帮她实现这个功能吧。
编程要求
编写代码实现对给定文件夹目录结构的展示,如果是文件夹则在其名字之前加上+--
若是文件则加上--
,上级目录与下级目录、下级文件用两个空格作为间隔,如果文件夹与文件平级,优先打印文件夹;补充完善右侧代码区中的showDirStructure(File dir)
函数实现要求的功能,其中函数参数含义如下:
dir
:指定要显示的文件夹
测试说明
样例1
输入:src/step2/root
输出:
输入:src/step2/dir
输出:
提示:java
中的File
类有listFiles
方法可以获取文件目录。
你可以通过如下链接下载本关涉及到的目录文件:
https://www.educoder.net/attachments/download/200773/step2Dir.zip
开始挑战吧,祝你成功!
AcCode:
package step2;
import java.io.File;
public class Task {
/********** BEGIN **********/
public boolean csh = true;
public int countYwj = 0;
public void showDirStructure(File file) {
if (csh) {
System.out.println("+--" + file.getName());
for (int i = 0; i < file.getAbsolutePath().length(); i++) {
if (file.getAbsolutePath().charAt(i) == '/') {
countYwj++;
}
}
csh = false;
}
File[] files = file.listFiles();
for (File file2 : files) {
String filePath = file2.getAbsolutePath();
int countThisFile = 0;
for (int i = 0; i < filePath.length(); i++) {
if (filePath.charAt(i) == '/') {
countThisFile++;
}
}
for (int i = 1; i <= 2 * (countThisFile - countYwj); i++) {
System.out.print(" ");
}
if (!file2.isDirectory()) {
System.out.println("--" + file2.getName());
} else {
System.out.println("+--" + file2.getName());
showDirStructure(file2);
}
}
}
/********** END **********/
}
注意:OJ使用的是linux系统,文件分隔符是'/',由于我使用的是Windows系统本地测了好久发现没问题发现是分隔符错了,多花了好久时间
第3关:图片查看器
挑战任务
参加“绿盟杯”竞赛的小明想要开发一个图片查看器,他想只显示文件夹下所有图片类型的文件。
你来帮小明实现这个功能吧。
编程要求
基本功能与第二题类似,编写代码实现对给定文件夹目录结构的展示,如果是文件夹则在其名字之前加上+--
若是文件则加上--
,上级目录与下级目录、下级文件用两个空格作为间隔,如果文件夹与文件平级,优先打印文件夹;另外需要对文件进行过滤,只显示图片类型的文件,本关需要过滤的图片文件类型有:“jpg,png,bmp”,请补充完善右侧代码区中的showDirStructure(File dir)
函数实现本关要求的功能,其中函数参数含义如下:
dir
:指定要显示的文件夹
测试说明
样例1
输入:src/step3/root
输出:
样例2
输入:src/step2/dir
输出:
提示:
你可以通过如下链接下载本关涉及到的目录文件:
https://www.educoder.net/attachments/download/202620/step3Dir.zip
开始挑战吧,祝你成功!
AcCode:
package step3;
import java.io.File;
public class Task {
/********** BEGIN **********/
public void showDirStructure(File file) {
System.out.println("+--" + file.getName());
showDirTree(file," ");
}
public static void showDirTree(File dir,String interval){
File[] files = dir.listFiles();
interval += " ";
for (File file : files) {
if(!file.isDirectory()){
String fileName = file.getName();
if(fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp")) {
System.out.println(interval + "--" + file.getName());
}
}else{
System.out.println(interval + "+--" + file.getName());
showDirTree(file,interval + " ");
}
}
}
/********** END **********/
}