关于java的 ,pta上的判断题

想问一下这两题有什么区别以及答案是什么,pta上的判断题,我感觉我搞混了

img

区别: 上面的题多了一个静态方法能不能被调用
答案:两个题的答案都是T
分析:静态方法:是使用static关键字修饰的方法,又叫类方法.属于类的,不属于对象, 在实例化对象之前就可以通过类名.方法名调用静态方法。 (静态属性,静态方法都是属于类的,可以直接通过类名调用)。
A.在静态方法中,可以调用静态方法。
B.在静态方法中,不能调用非静态方法。
C.在静态方法中,可以引用类变量(即,static修饰的变量)。
D.在静态方法中,不能引用成员变量(即,没有static修饰的变量)。
E.在静态方法中,不能使用super和this关键字

非静态方法:是不含有static关键字修饰的普通方法,又称为实例方法,成员方法。属于对象的,不属于类的。(成员属性,成员方法是属于对象的,必须通过new关键字创建对象后,再通过对象调用)。
A.在普通方法中,可以调用普通方法。
B.在普通方法中,可以调用静态方法
C.在普通方法中,可以引用类变量和成员变量
D.在普通方法中,可以使用super和this关键字

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7572204
  • 你也可以参考下这篇文章:java pta 期末测试答案(稍后出试题解析)
  • 除此之外, 这篇博客: JAVA方向程序设计PTA期末考试小测试中的 21.三角形三边异常的捕获 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

     创建一个IllegalTriangleException类,处理三角形的三边,任意两边之和小于等于第三边,则显示三条边不符合要求。
    设计一个有三条边的Triangle的类。如果三条边不符合要求,则抛出一个IllegalTriangleException异常。
    三角形的构造方法如下:

    public Triangle(double side1, double side2, double side3) throws IllegalTriangleException {
        //实现
    }
    

    三角形类中toString()的方法返回这个三角形的字符串描述,toString()方法的实现如下所示:

    return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + "]";
    

    主类如下:

    public class Main {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            double s1 = input.nextDouble();
            double s2 = input.nextDouble();
            double s3 = input.nextDouble();
            try {
                Triangle t = new Triangle(s1, s2, s3);
                System.out.println(t.toString());
            } catch (IllegalTriangleException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
    

    输入三个数据表示三条边。

    与样例一致。

    1 1 1
    
    Triangle [side1=1.0, side2=1.0, side3=1.0]
    
    1 2 3
    
    Invalid: 1.0,2.0,3.0
    import java.util.*;
    public class Main{
    	  public static void main(String[] args) {
    	      Scanner input = new Scanner(System.in);
    	      double s1 = input.nextDouble();
    	      double s2 = input.nextDouble();
    	      double s3 = input.nextDouble();
    	      try {
    	         Triangle t = new Triangle(s1,s2,s3);
    	         System.out.println(t);
    	      }
    	      catch (IllegalTriangleException ex) {
    	          System.out.println(ex.getMessage());
    	      }
    	  }
    }
    //创建一个IllegalTriangleException类,处理三角形的三边,任意两边之和小于等于第三边,则显示三条边不符合要求
    class IllegalTriangleException extends Exception{
    	public IllegalTriangleException(String message) {
    		super(message);
    		
    	}
    	
    }
    //然后设计一个有三条边的Triangle的类。如果三条边不符合要求,则抛出一个IllegalTriangleException异常。
    class Triangle{
    	double side1;
    	double side2;
    	double side3;
    	public Triangle(double side1, double side2, double side3) throws IllegalTriangleException {
    		this.side1=side1;
    		this.side2=side2;
    		this.side3=side3;
    	    if(this.side1+this.side2<=this.side3||this.side2+this.side3<=this.side1||this.side1+this.side3<=this.side2)
    	    {
    	    	throw new IllegalTriangleException("Invalid: "+this.side1+","+this.side2+","+this.side3);
    	    	
    	    }
    	}
    	
    	public String toString() {
    		return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + "]";
    	}
    }
    

    main方法:
    事先定义好一个大小为5的数组。
    根据屏幕输入产生相应异常。
    提示:可以使用System.out.println(e)打印异常对象的信息,其中e为捕获到的异常对象。

    arr 代表访问数组,然后输入下标,如果抛出ArrayIndexOutOfBoundsException异常则显示,如果不抛出异常则显示下标。
    other,结束程序。

    与样例一致。

    arr 3
    arr 9
    arr 2
    arr 10
    other
    
    下标:3
    java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 5
    下标:2
    java.lang.ArrayIndexOutOfBoundsException: Index 10 out o
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            int []arr = new int [5];
            Scanner input = new Scanner(System.in);
            int i=1;
            while (input.hasNext()){
                i++;
                String  a = input.next();
                if (a.equals("arr")){
                    int b = input.nextInt();
                    try {
                        int d = arr[b];
                    }catch (Exception e){
                        System.out.println("下标:"+i);
                        System.out.println(e.toString());
                    }
                }else if (a.equals("num")){
                    String  b = input.next();
                    try{
                        int d = Integer.parseInt(b);
                    }catch (Exception e){
                        System.out.println("下标:"+i);
                        System.out.println(e.toString());
                    }
                }else if (a.equals("cast")){
                    try {
                        Object str = new String("cc");
                        System.out.println((Integer)(str));
                    }catch (Exception e){
                        System.out.println("下标:"+i);
                        System.out.println(e.toString());
                    }
                }else if (a.equals("null")){
                    try {
                        String t = null;
                        int l = t.length();
                    }catch (Exception e){
                        System.out.println("下标:"+i);
                        System.out.println(e.toString());
                    }
                }else {
                    System.exit(0);
                }
    
            }
        }
    }
    

    Arrays.sort()可以对所有实现Comparable的对象进行排序。但如果有多种排序需求,例如:有时需要对name进行降序排序,有时需要对年龄进行升序排序,使用Comparable就无法满足这样的需求。可以编写不同的Comparator接口类来满足多样的排序需求。

    1、编写PersonSortable2类
    属性:private name(String)、private age(int)
    有参构造函数:参数为name,age
    toString方法:返回格式为:name-age

    2、编写Comparator接口类
    编写NameComparator类,实现对name进行降序排序;
    编写AgeComparator类,对age进行升序排序。
    根据升降序需求重写compare(a,b)方法。
    (compare(a,b):返回一个整数值,如果a>b,返回正整数,反之,返回负整数;相等则返回0。)

    3、main方法中
    首先输入n;
    输入n行name和age,并创建n个对象放入数组;
    使用Arrays.sort()方法对数组进行排序后输出:
    (1)对数组按照name进行降序排序后输出;
    (2)在此基础上对数组按照age进行升序排序后输出。

    Arrays.sort(T[] a, Comparator c):接口回调,调用已经封装好的排序规则进行排序。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^