public class Pass{
static int j = 20;
public void amethod(int x){
x = x*2;
j = j*2;
}
public static void main(String args[]){
int i = 10;
Pass p = new Pass();
p.amethod(i);
System.out.println(i+" and "+j);
}
}
A.10 and 20
B.错误:方法参数与变量不匹配
C.20 and 40
D.10 and 40
若A1、A2为已定义的接口 ,以下接口定义中没有语法错误的是( A ) 。
A.interface B { void print();}
B.interface B { void print() { } }
C.abstract interface B { void print() }
D.abstract interface B extends A1,A2 { abstract void print(){ };}
将以下哪种方法插入行3是不合法的。 ( A )
1.public class Test1{
2. public float aMethod(float a,float b){ }
3.
4.}
A.public float aMethod(float c,float d){ }
B.public int aMethod(int a, int b){ }
C.private float aMethod(int a,int b,int c){ }
D.public float aMethod(float a, float b,float c){ }
1.class HasStatic{
2. private static int x=100;
3. public static void main(String[ ] args){
4. HasStatic hs1=new HasStatic( );
5. hs1.x++;
6. HasStatic hs2=new HasStatic( );
7. hs2.x++;
8. hs1=new HasStatic( );
9. hs1.x++;
10. HasStatic.x--;
11. System.out.println(“x=”+x);
12. }
13. }
A.程序通过编译,输出结果为:x=103
B.程序通过编译,输出结果为:x=102
C.5行不能通过编译,因为引用了私有静态变量
D.10行不能通过编译,因为x是私有静态变量
Which of the following statements about the Java keywords is true? ( )
A.they can never be used as identifiers
B.they can never be used in comments
C.they are not case-sensitive
D.they can also be used as identifiers
方法体内定义的变量称局部变量,下述关于局部变量的说法中错误的是( A )。
A.局部变量不能与类中的成员变量同名
B.局部变量未经赋值不能使用
C.局部变量仅在所定义的代码块内(花括号对内)有效
D.局部变量不能加修饰词修饰
有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是( D ).
A.a1.class
B.a1
C.都对
D.a1.java
A JavaFX action event handler contains a method __. ( )
A.public void actionPerformed(ActionEvent e)
B.public void handle(Event e)
C.public void actionPerformed(Event e)
D.public void handle(ActionEvent e)
A JavaFX event handler for event type T is an instance of _. ( )
A.EventHandler
B.ActionEvent
C.Action
D.EventHandler
To handle the mouse click event on a pane p, register the handler with p using __. ( )
A.p.setOnMouseClicked(handler);
B.p.setOnMouseReleased(handler);
C.p.setOnMouseDragged(handler);
D.p.setOnMousePressed(handler);
Fill in the code below in the underline: ( )
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.setAction(__);
}
public void setAction(T1 t) {
t.m();
}
}
interface T1 {
public void m();
}
A.(e) -> {System.out.print("Action 1! ")}
B.(e) -> System.out.print("Action 1! ")
C.() -> System.out.print("Action 1! ")
D.System.out.print("Action 1! ")
import java.io.*;
public class ABC {
public static void main(String argv[]) throws Exception {
ABC m=new ABC();
System.out.println(m.ff());
}
public int ff() {
try {
FileInputStream dis=new FileInputStream("Hello.txt");
} catch (FileNotFoundException fne) {
System.out.print("No such file found, ");
throw fne;
} finally {
System.out.print("Doing finally, ");
}
return 0;
}
}
A.No such file found,
B.No such file found ,0
C.No such file found, Doing finally,
D.No such file found, Doing finally, 0
三、程序填空题
17. 相同的数组。如果两个数组list1和list2的内容相同,那么就说它们是相同的。使用下面的程序可以判断两个数组是否相同,请填空补全程序。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int size1 = input.nextInt();
int[] list1 = new int[size1];
// Enter values for list1
for (int i = 0; i < list1.length; i++)
list1[i] = input.nextInt();
int size2 = input.nextInt();
int[] list2 = new int[size2];
// Enter values for list2
for (int i = 0; i < list2.length; i++)
list2[i] = input.nextInt();
input.close();
if (equals(list1,list2)) {
System.out.println("Two lists are identical");
} else {
System.out.println("Two lists are not identical");
}
}
public static boolean equals(int[] list1, int[] list2) {
if (list1.length != list2.length)
return false;
Arrays.sort(list1);
Arrays.sort(list2);
for (int i = 0; i < list1.length; i++)
if (list1[i] != list2[i])
return false;
return true;
}
}
四、函数题
1 创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
public abstract double getArea(); // 抽象方法 求面积
public abstract double getPerimeter(); // 抽象方法 求周长
}
直角三角形类的构造函数原型如下:
RTriangle(double a, double b);
其中 a 和 b 都是直角三角形的两条直角边。
裁判测试程序样例:
import java.util.Scanner;
import java.text.DecimalFormat;
interface IShape {
public abstract double getArea();
public abstract double getPerimeter();
}
/*你写的代码将嵌入到这里*/
class RTriangle implements IShape {
public RTriangle(double a, double b) {
this.a = a;
this.b = b;
}
public double getArea() {
return a * b / 2.0;
}
public double getPerimeter() {
return a + b + (Math.sqrt(a * a + b * b));
}
private double a;
private double b;
}
public class Main {
public static void main(String[] args) {
DecimalFormat d = new DecimalFormat("#.####");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
IShape r = new RTriangle(a, b);
System.out.println(d.format(r.getArea()));
System.out.println(d.format(r.getPerimeter()));
input.close();
}
}
输入样例:
3.1 4.2
输出样例:
6.51
12.5202
在一个正n边形(Regular Polygon)中,所有边的边长都相等,且所有角的度数相同(即这个多边形是等边、等角的)。我们已经从下列接口IShape实现了一个正n边形类RegularPolygon。其构造方法为:RegularPolygon(int n,double side); 其中n为边数,side为边长。
从键盘输入正n边形的边数n和边长a,请编程计算该正n边形的面积和周长。
interface IShape {// 接口
double getArea(); // 求面积
double getPerimeter();// 求周长
}
裁判测试程序样例:
interface IShape {// 接口
double getArea(); // 求面积
double getPerimeter();// 求周长
}
/* 这里有正n边形类RegularPolygon的实现*/
public class Main {
public static void main(String[] args) {
/* 你提交的代码将嵌入到这里 */
// 类似代码,简直是侮辱智商
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
RTriangle rtt = new RTriangle(a, b);
System.out.printf("%.4f\n", rtt.getArea());
System.out.printf("%.4f\n", rtt.getPerimeter());
}
}
在这里给出一组输入。例如:
5
7
在这里给出相应的输出。要求保留4位小数,例如:
84.3034
35
输入数目不定的多对字符串,每行两个,以空格分开。 例如:
filename filepath
Tom Jack
返回两个字符串的最大前缀,例如:
The common prefix is file
No common prefix
filename filepath
Tom Jack
The common prefix is file
No common prefix
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.lang.*;
public class test6 {
public static void prefix(String s1, String s2) {
StringBuffer sb = new StringBuffer();
int shortlen = s1.length() < s2.length() ? s1.length() : s2.length();
for (int i = 0; i < shortlen; i++) {
if (s1.charAt(i) == s2.charAt(i))
sb.append(s1.charAt(i));
else
break;
}
if (sb.length() == 0)
System.out.println("No common prefix");
else
System.out.println("The common prefix is " + sb);
}
public static void main(String[] args) throws IOException {
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String line = reader.readLine();
if (line.equals("")) {
break;
}
int i;
for (i = 0; i < line.length(); i++)
if (line.charAt(i) == ' ')
break;
prefix(line.substring(0, i - 1), line.substring(i + 1, line.length()));
}
}
}
定义一个有关学生的Student类,内含类成员变量: String name、String sex、int age,所有的变量必须为私有(private)。
(1).编写有参构造函数:
能对name,sex,age赋值。
(2).覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
(3).对每个属性生成setter/getter方法
(4).main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。
tom 15 male
Student [name=‘tom’, sex=‘male’, age=15]
// 不想写了,太浪费时间了,就贴一个实验中做过的题吧,与之类似
设计一个学生类Student,类有成员变量姓名、年龄,有“学习”方法。
Student类派生出本科生类,本科生类派生出研究生类,
本科生类增加专业和学位属性,覆盖学习方法。
研究生类增加研究方向属性,覆盖学习方法。
每个类都有显示方法,用于输出属性信息。
编写测试类测试这三个类。
1. 源代码:
/*Student 类*/
import java.util.*;
import java.lang.*;
public class Student {
public Student(String na, int ag) {
name = na;
age = ag;
}
public void study() {
System.out.println("I'am a student ,I'am studying !!!!!");
}
public void print() {
System.out.print("name= " + name + " ,age= " + age);
}
private String name;
private int age;
}
/*benke类*/
import java.util.*;
import java.lang.*;
public class benke extends Student {
public benke(String name,int age,String ma,String deg) {
super(name,age);
major = ma ;
degree = deg;
}
@Override
public void study() {
System.out.println("I'am a benke ,I'am studying !!!!!");
}
public void print() {
super.print();
System.out.print(" major= " + major + ", degree= " + degree);
}
private String major;
private String degree;
}
/*Graduate 类*/
import java.util.*;
import java.lang.*;
public class Graduate extends benke {
public Graduate(String name, int age, String ma, String deg, String dir) {
super(name, age, ma, deg);
research_dir = dir;
}
@Override
public void study() {
System.out.println("I'am a Graduate ,I'am studying !!!!!");
}
public void print() {
super.print();
System.out.print(" research_dir= " + research_dir);
}
private String research_dir;
}
/*测试类*/
import java.util.*;
import java.lang.*;
public class test {
public static void main(String[] args) {
Student st = new Student("小王",26);
st.print();
System.out.println();
st.study();
System.out.println();
benke ben = new benke("小张",28,"CS","CS_degree");
ben.print();
System.out.println();
ben.study();
System.out.println();
Graduate gg = new Graduate("小刘",36,"艺术","艺术_degree","movie");
gg.print();
System.out.println();
gg.study();
}
}
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
interface IShape {// 接口
// 抽象方法 求面积
public abstract double getArea();
// 抽象方法 求周长
public abstract double getPerimeter(); }
请编程从键盘输入两条直角边长值,创建一个直角三角形对象,然后输出直角三角形的面积和其周长。保留4位小数。
输入两条直角边长值。例如:3 4。
在这里输出直角三角形的面积和周长。例如: 6 12
3.1 4.2
6.51
12.5202
import java.util.*;
import java.lang.*;
/*1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3.接口中的方法都是公有的*/
interface IShape { // 接口
// 抽象方法 求面积
public abstract double getArea();
// 抽象方法 求周长
public abstract double getPerimeter();
}
class RTriangle implements IShape {
public RTriangle(double a, double b) {
this.a = a;
this.b = b;
}
public double getArea() {
return a * b / 2.0;
}
public double getPerimeter() {
return a + b + (Math.sqrt(a * a + b * b));
}
private double a;
private double b;
}
public class test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
RTriangle rtt = new RTriangle(a, b);
System.out.printf("%.4f\n", rtt.getArea());
System.out.printf("%.4f\n", rtt.getPerimeter());
}
}
程序填空题。根据题目要求完善下面的代码。请提交完整代码。 “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。 Person类的setAge方法用于更新年龄。 如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int age;
age = in.nextInt();
Person p = new Person(age);
age = in.nextInt();
try{
p.setAge(age);
}catch(AgeException e){
}
}
}
class Person{
int age;
public Person(int age){
this.age = age;
}
public void setAge(int age) throws AgeException {
if(this.age <=age){
this.age = age;
}else{
throw new AgeException();
}
}
}
class AgeException extends Exception{
}
输入在一行中给出2个绝对值不超过100的正整数A和B。
在一行中输出一个字符A或者B。
50 18
B
import java.util.*;
import java.lang.*;
public class test4 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int age;
age = in.nextInt();
Person p = new Person(age);
age = in.nextInt();
try {
p.setAge(age);
} catch (AgeException e) {
System.out.println("B");
} finally {
}
}
}
class Person {
int age;
public Person(int age) {
this.age = age;
}
public void setAge(int age) throws AgeException {
if (this.age <= age) {
this.age = age;
System.out.println("A");
} else {
throw new AgeException();
}
}
}
class AgeException extends Exception {
}
请编写程序,从键盘输入两个整数m,n,找出等于或大于m的前n个素数。
第一个整数为m,第二个整数为n;中间使用空格隔开。例如:
103 3
从小到大输出找到的等于或大于m的n个素数,每个一行。例如:
103
107
109
9223372036854775839 2
9223372036854775907
9223372036854775931
import java.util.*;
import java.lang.*;
import java.math.BigInteger;
public class test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
BigInteger m = input.nextBigInteger();
int n = input.nextInt();
int temp = n;
for (BigInteger i = m; temp > 0; i = i.add(BigInteger.ONE)) {
if (isPrime(i)) {
temp--;
System.out.println(i);
}
}
}
public static boolean isPrime(BigInteger a) {
return a.isProbablePrime(50);
}
}
请编写程序,从键盘输入一个整数n,找出大于long.MAX_VALUE且能被n整除的前3个数字。
输入一个作为除数的整数n,例如: 17
输出大于long.MAX_VALUE且能被n整除的前3个数字,例如下列三个数能被17整除且大于long.MAX_VALUE: 9223372036854775816
9223372036854775833
9223372036854775850
103
9223372036854775832
9223372036854775935
9223372036854776038
import java.util.*;
import java.lang.*;
import java.math.BigInteger;
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int tt = input.nextInt();
// Long.MAX_VALUE 转换为 BigInteger
BigInteger big = new BigInteger(String.valueOf(Long.MAX_VALUE));
System.out.println("start......");
int count = 3;
while (count != 0) {
/*
* BigInteger mod(BigInteger m) This method returns
* a BigInteger whose value is
* (this mod m).
*/
// intValue() 将BigInteger 转为 int
if (big.mod(BigInteger.valueOf(tt)).intValue() == 0) {
count--;
System.out.println(big);
}
/* BigInteger ONE: BigInteger的常量 1 */
big = big.add(BigInteger.ONE); //相当于给 BigInteger+1
}
System.out.println("end.......");
}
}
得到两个巨大素数(质数)的乘积是简单的事,但想从该乘积分解出这两个巨大素数却是国际数学界公认的质因数分解难题。这种单向的数学关系,是不对称加密RSA算法的基本原理。 本题给出两个大素数(128bit位)的乘积和其中一个素数,请你编程求出另一个素数。
44022510695404470886511586569647292146578314354528108825807522926455663589709 (大素数的乘积)
189193782774204832019945226750213439577 (其中一个大素数)
232684764001698545563067004009755869717 (另一个素数)
60883665878129858935918958333091530420746054622405737630613777684610994823161
271963475875372143777333694041058521413
223867067745633357281812540202957589797
import java.util.*;
import java.lang.*;
import java.math.BigInteger;
public class test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
BigInteger a = input.nextBigInteger();
BigInteger b = input.nextBigInteger();
BigInteger c = a.divide(b);
System.out.println(c);
}
}