想问一下这两题有什么区别以及答案是什么,pta上的判断题,我感觉我搞混了
区别: 上面的题多了一个静态方法能不能被调用
答案:两个题的答案都是T
分析:静态方法:是使用static关键字修饰的方法,又叫类方法.属于类的,不属于对象, 在实例化对象之前就可以通过类名.方法名调用静态方法。 (静态属性,静态方法都是属于类的,可以直接通过类名调用)。
A.在静态方法中,可以调用静态方法。
B.在静态方法中,不能调用非静态方法。
C.在静态方法中,可以引用类变量(即,static修饰的变量)。
D.在静态方法中,不能引用成员变量(即,没有static修饰的变量)。
E.在静态方法中,不能使用super和this关键字
非静态方法:是不含有static关键字修饰的普通方法,又称为实例方法,成员方法。属于对象的,不属于类的。(成员属性,成员方法是属于对象的,必须通过new关键字创建对象后,再通过对象调用)。
A.在普通方法中,可以调用普通方法。
B.在普通方法中,可以调用静态方法
C.在普通方法中,可以引用类变量和成员变量
D.在普通方法中,可以使用super和this关键字
创建一个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-age2、编写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):接口回调,调用已经封装好的排序规则进行排序。