判断题
1、在Java中,高优先级的可运行线程会抢占低优先级线程。 F
2、Object是Java中所有类的共同父类。 T
3、一个数组可以存放不同类型的数值。F
4、A final class can have instances. T
5、static关键字可以修饰成员变量,也可以修饰局部变量。 F
6、数组也是对象。T
7、程序开发者必须创建一个线程去管理内存的分配。 F
8、在Java程序中,可以使用protected来修饰一个类。T
9、当GUI应用程序使用边界布局管理器BorderLayout时,GUI组件可以按任何顺序添加到面板上。T
10、You can always successfully cast an instance of a superclass to a subclass. F
选择题
1、抽象窗口工具包( )是Java提供的建立图形用户界面GUI的开发包。
AWT
java.lang
java.io
Swing
2、下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态( )。
等待阻塞状态下的纯种被interrput()中断
等待阻塞状态下的线程被notify()唤醒
等待阻塞状态下的线程调用wait()方法
等待时间到
3、下列属于容器的组件有:( )
JPanel
JTextArea
JButton
Canvas
4、下列哪个方法可以使线程从运行状态进入其他阻塞状态( )。
yield()
wait()
sleep()
start()
5、如果容器组件p的布局是BorderLayout,则在p的下部添加一个按钮b,应该使用的语句是( ) (2分)
p.add(b,”North”);
p.add(b);
b.add(p,”North”);
p.add(b,”South”);
6、下列哪一项不属于布局管理器? ( ) (2分)
GridLayout
CardLayout
BorderLayout
BagLayout
7、What kind of reader do you use to handle Character code? ( ) (2分)
Reader
PrintWriter
InputStreamReader
Writer
8、在类中若要处理ActionEvent事件,则该类需要实现的接口是( ) (2分)
ActionListener
Serializable
Event
Runnable
9、paint( )方法使用哪种类型的参数? ( ) (2分)
Graphics2D
Color
String
Graphics
10、如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象()。
DataOutputStream
FileWriter
FileOutputStream
FileInputStream
程序填空题
1、(检验密码)一些网站设定了一些制定密码的规则。编写一个方法,检验一个字符串是否合法的密码。假设密码规则如下: 密码必须至少有8个字符。 密码只能包含字母和数字。 密码必须至少有2个数字。 请编写一个程序,提示用户输入密码,如果改密码符合规则就显示“Valid password”,否则显示“Invalid password”。
public class Main {
public static void main(String[] args) {
// Prompt the user to enter a password
java.util.Scanner input = new java.util.Scanner(System.in);
//System.out.print("Enter a string for password: ");
String s = input.nextLine();
if (isValidPassword(s)(2分)) {
System.out.println("Valid password");
}
else {
System.out.println("Invalid password");
}
}
/** Check if a string is a valid password */
public static boolean isValidPassword(String s) {
// Only letters and digits?
for (int i = 0; i < s.length(); i++) {
if (!Character.isLetter(s.charAt(i))(2分)) && !Character.isDigit(s.charAt(i)))
return false;
}
// Check length
if (s.length()(2分) < 8)
return false;
// Count the number of digits
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))(2分))
count++;
}
if (count >= 2)
return true;
else
return false;
}
}
2、相同的数组。如果两个数组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)(4分)) {
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(3分))
return false;
Arrays.sort(list1);
Arrays.sort(list2)(3分);
for (int i = 0; i < list1.length; i++)
if (list1[i] != list2[i])
return false;
return true;
}
}
函数题
1、定义一个股票类Stock (10分)
定义一个名为Stock的股票类,这个类包括:一个名为symbol的字符串数据域表示股票代码。一个名为name的字符串数据域表示股票名称。一个名为previousClosingPrice的double数据域,它存储前一日的股票交易价格。一个名为currentPrice数据域,它存储当前的股票交易价格。创建一个有特定代码和名称的股票的构造方法。一个名为getChangePercent()方法返回从previousClosingPrice变化到currentPrice的百分比。
类名为:
Stock
裁判测试程序样例:
import java.util.Scanner;
/* 你提交的代码将被嵌入到这里 */
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String symbol1=input.next();
String name1=input.next();
Stock stock = new Stock(symbol1, name1);
stock.previousClosingPrice = input.nextDouble();
// Input current price
stock.currentPrice = input.nextDouble();
// Display stock info
System.out.println(stock.name+"price changed: " + stock.changePercent() * 100 + "%");
input.close();
}
}
输入样例:
002594
比亚迪
56.98
55.40
输出样例:
比亚迪股价涨跌: -2.77290277290277%
补充的代码:
class Stock{
private String s;
public String name;
public double previousClosingPrice;
public double currentPrice;
public Stock(String s,String n) {
this.s = s;
this.name = n;
}
public double changePercent(){
return (currentPrice-previousClosingPrice)/previousClosingPrice;
}
}
编程题
1、求阶乘factorial (20分)
编程从键盘输入一个整数,计算出阶乘并输出。
输入格式:
输入 39
输出格式:
输出:20397882081197443358640281739902897356800000000
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int yuan = in.nextInt();
BigInteger jiecheng = new BigInteger("1");
while ( yuan>0) {
jiecheng=jiecheng.multiply(new BigInteger(yuan+""));
yuan--;
}
System.out.println(jiecheng);
in.close();
}
}
2、 给定两个点的坐标,求解两个点的距离。 (20分)
输入格式:
给定四个浮点数,作为线段的两个点。
输出格式:
输出该线段的距离。
输入样例:
0 0 1.0 1.0
输出样例:
The distance is 1.41
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
DecimalFormat mFormat = new DecimalFormat("#.##");
Scanner in = new Scanner(System.in);
double a = in.nextDouble();
double b = in.nextDouble();
//System.out.println("The distance is "+mFormat.format(Math.hypot((in.nextDouble()-a), (in.nextDouble()-b))));
System.out.printf("The distance is %.2f",Math.hypot((in.nextDouble()-a), (in.nextDouble()-b)));
in.close();
}
}
3、 找出最大的对象 (10分)
编写一个方法,返回对象数组中最大的对象。方法签名如下:
public static Object max(Comparable[] a)
所有对象都是Comparable接口的实例。对象在数组中的顺序是由compareTo方法决定的。
编写测试程序,从键盘输入5个字符串和5个整数,创建一个由5个字符串构成的数组、一个由5个整数构成的数组。找出数组中最大的字符串、整数并输出。
输入格式:
输入
Xi’an (输入5个字符串,每行一个)
Beijing
ShangHai
GuangZhou
ShenZhen
8 9 12 7 6 (输入5个整数,以空格分隔)
输出格式:
输出 Max string is Xi’an (输出最大的字符串)
Max integer is 12 (输出最大的整数)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in =new Scanner(System.in);
String[] strings = new String[5];
Integer[] ints = new Integer[5];
int count = 0;
while (count < 5) {
strings[count] = in.next();
count++;
}
count = 0;
while (count < 5) {
ints[count] = in.nextInt();
count++;
}
System.out.println("Max string is "+max(strings));
System.out.println("Max integer is "+max(ints));
in.close();
}
public static Object max(@SuppressWarnings("rawtypes") Comparable[] a){
Arrays.sort(a);
return a[a.length-1];
}
}