目录
选择题
- newB(),去执行B的构造方法,先执行了super(5),执行A的构造方法,A的构造方法调用了setValue(5),因为调用的对象B的对象,B中重写了setvalue,所以是执行B的setvalue,super.setValue(2*5),是执行A的setValue,所以value被设置为10
- 之后是执行B的构造方法中的setValue(getValue()-3),先执行getValue(),因为B中没有,所以执行A的getValue,value++变成11,然后执行finally的this.setValue(11),由于是B的对象调用的,所以执行B的setValue,super.setValue(22),然后输出的就是22,返回的是11
- setValue(11-3),super.setValue(16),将value变成了16
- 回到主方法的newB().getValue(),调用的是A中的getValue(),value++,变成17然后执行finally的this.setValue(17),由于是B的对象调用的,所以执行B的setValue,super.setValue(34),然后输出的就是34,返回的是17
编程题
package days.day8; import java.util.*; import java.lang.*; public class Main2{ public static void main(String []args){ //先通过辗转相除法的到最大公约数 //最小公倍数=a*b/最大公约数 Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); int sum=a*b; int i=a%b; while(i!=0){ a=b; b=i; i=a%b; } System.out.println(sum/b); } }
import java.util.*; import java.lang.*; public class Main{ public static void main(String []args){ boolean flag1=true; boolean flag2=true; Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String arr[]=new String[n]; //找反例子 for(int i=0;i<n;i++){ arr[i]=sc.nextLine(); } for(int i=0;i<n-1;i++){ if(arr[i].compareTo(arr[i+1])>0){ flag1=false; } if(arr[i].length()>arr[i+1].length()){ flag2=false; } } if(flag1&&flag2){ System.out.println("both"); }else if(flag1&&!flag2){ System.out.println("lexicographically"); }else if(flag2&&!flag1){ System.out.println("lengths"); }else{ System.out.println("none"); } } }