先看任务要求(源代码在下方,我建议你们先看任务分析)
乍一看,不就五个简单方法组成的一个大题目吗?
我在eclipse半小时敲完程序,完美运行,看eclipse运行结果
eclipse运行结果
我顺便把源代码放出来
有点小长……
然后怀着激动的心情准备通关educoder的时候,好家伙,下面一片红
educode运行结果
好家伙,我直接吐血
下面是三个小时的改bug时间
那就按他报错来改吧,说的第十行错误,可谁知到底是不是第十行错误
我干脆把后面代码全注释了,一个个方法试着运行这样改
error void type not allowed here
不用void那我直接“int”、“return”行不行!
改完后看来前两个方法已经没问题了
error printRect(sc.nextInt(),sc.nextInt(););
我以为是上一次没有使用“sc.close();”语句,所以才报错,但并不是;
抓头挠耳中,根据前面的语句发现,难道方法中不能使用Scanner?
改:
直接把你scanner注释掉!!
int f = input.nextInt();
int g = input.nextInt();
printRect(f,g);
好家伙,真的有用!
然后披荆斩棘:第四题也同样的改法,scanner注释掉!
方法调用
int arr[] = new int[5];
for (int i = 0; i < arr.length ; i++) {
arr[i] = input.nextInt();
}
//遍历数组
sortArr(arr);
因为各个编译器支持的代码格式不同,感觉要思考的方向更多了,一个能完美运行,而另一个却报错那么多,看起来是小问题,但是解决起来并不容易
关于educoder输出格式问题我就不再叙述了,那都是小问题
通关源代码(尽量不要抄作业,实在没办法可以借鉴节省时间)
package setp17;
import java.util.Scanner;
import java.util.Arrays;
public class HelloWorld {
/********** Begin **********/
/**
* 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum
*/
public static int getSum(int a,int b){
int sum = a + b;
// System.out.println(sum);
return sum;
}
/**
* 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg
*/
public static double getAvg(double a, double b, double c){
double d = (a + b + c) / 3;
// System.out.println(d);
return d;
}
/**
* 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect
*/
public static void printRect(int a, int b){
// Scanner sc = new Scanner(System.in);
// a = sc.nextInt();
// b = sc.nextInt();
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
System.out.print("*");
}
System.out.print("\n");
}
// sc.close();
}
/**
* 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr
*/
public static void sortArr(int[] arr){
// Scanner input = new Scanner(System.in);
// int [] arr = new int[5];
// for (int i = 0; i < arr.length ; i++) {
// arr[i] = input.nextInt();
// }
//遍历数组
int g = 0;
for (int l = 0; l < arr.length ; l++) {
for(int t = 0; t <arr.length -l - 1; t++) {
if (arr[t] > arr[t + 1]) {
g = arr[t];
arr[t] = arr[t + 1];
arr[t + 1] = g;
}
}
}
for (int j = 0; j < arr.length ; j++) {
System.out.println(arr[j]);
}
}
/**
* 第五题
* 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
*/
public static void Print99() {
for ( int i = 1; i < 10; i++ ) {
for( int j = 1; j <= i; j++ ) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
System.out.println();
}
}
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
getSum(a,b);
double c = input.nextDouble();
double d = input.nextDouble();
double e = input.nextDouble();
getAvg(c,d,e);
int f = input.nextInt();
int g = input.nextInt();
printRect(f,g);
int arr[] = new int[5];
for (int i = 0; i < arr.length ; i++) {
arr[i] = input.nextInt();
}
//遍历数组
sortArr(arr);
Print99();
input.close();
}
}
/********** End **********/