蓝桥杯和leetcode的区别还是挺明显的,leetcode不需要从main函数写起,只需要写代码的主要实现部分,但是蓝桥杯要求整个代码的实现
这道题主要在于return的使用在main函数中是不被允许的
因此我们需要把return剥离到另一个方法中(如果不用return应该也能做出来,但是不如return简单)
组合写main函数以及构造函数的注意事项有
1、return后的值不是直接能输出的,还是需要调用该函数,函数返回值的意思就是f(x)=return值,如果输出该return,还是要用System.out.println(sol.findFirst(nums,tag));
2、main函数输入到构造函数的值,其符号表示可相同可不同,不必在意;
3、Main sol = new Main();
int res = sol.findFirst(nums,tag);
我们是无法直接调用findFirst构造函数,
如果使用 int res = findFirst(nums,tag);
会出现错误:无法从静态上下文中引用非静态方法 findFirst(int[],int)
因为非静态方法不是独立存在的,所以我们需要先申明对象,再通过对象调用
所以用Main sol = new Main();
再使用int res = sol.findFirst(nums,tag);即可
4、数组的length不是方法,因此不用括号,使用nums.length表示即可
而字符串的length是方法,因此需要括号,使用时要用str.length()表示
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
int[] nums = new int[n];
for(int i=0;i<n;i++)
{
nums[i] = sc.nextInt();
}
sc.nextLine();
int tag = sc.nextInt();
Main sol = new Main();
//int res = sol.findFirst(nums,tag); System.out.println(res);
System.out.println(sol.findFirst(nums,tag));
}
public int findFirst(int[] nums,int tag){
for(int i=0;i<nums.length;i++){
if(nums[i] == tag){
return i+1;
}
}
return -1;
}
}