请说出下列【代码】的输出结果
Java
class A{
int x = 2;
static int y = 5;
int f(){
y=x+y;
return x+y;
}
}
public class Code1 {
public static void main(String[] args){
A a = new A();
A b = new A();
a.x=10;
System.out.println(a.f());//【代码1】
System.out.println(b.f());//【代码2】
b.y=10;
System.out.println(a.f());//【代码3】
}
}
【代码1】25 【代码2】19 【代码3】30
这道题考察的是静态成员变量的特点,无论一个类实例了多少个对象,这些对象都共享一个静态成员变量。
a对象将x的值改为10后调用了f方法,y的值变为了15,返回的值是x+y即10+15为25。
b对象调用f方法,y的值在15的基础上又加了x(2)变成了17,返回x+y即2+17位19。之后b.y=10,那么a中的y也变成了10
a对象再一次调用f方法,y的值在10的基础上又加了10变成20,返回x+y即20+10=30.
请说出下列【代码】的输出结果
Java
import javax.swing.JTextField;
class MySchool {
JTextField showMess;
void setJTextField(JTextField t) {
showMess = t;
}
void write(String s) {
showMess.setText(s);
}
JTextField getJTextField() {
return showMess;
}
}
public class Code2 {
public static void main(String[] args) {
JTextField text = new JTextField("学生");
System.out.println(text.gettext());// 【代码1】
MySchool school = new MySchool();
school.setJTextField(text);
school.write("上课不玩手机");
System.out.println(text.getText());// 【代码2】
JTextField no = school.getJTextField();
no = new JTextField("上课迟到");
System.out.println(school.getJTextField().getText());// 【代码3】
}
}
【代码1】调用getText方法,获取文本框中的字符串内容。输出“学生”。类型相同的两个对象一旦引用相同,他们就有完全相同的变量(实体)。将JTextField类的对象text传给了school的setJTextField方法,将text的引用赋值给了showMess,那么调用write方法修改了shwoMess中的内容后,text的内容也跟着改变,所以【代码2】输出上课不玩手机,【代码3】是调用school的getJTextField()方法返回showMess对象后调用getText方法返回其中分内容,即为上课不玩手机。
请说出下列【代码】的输出结果。
Java
import java.util.Scanner;
import java.util.StringTokenizer;
public class Code3 {
public static void main(String args[]) {
String s = "height:1229#width:2912";
StringTokenizer fenxi = new StringTokenizer(s, "wid:th,eg#");
System.out.println(fenxi.countTokens()); // 【代码1】
String str = fenxi.nextToken();
System.out.println(fenxi.nextToken()); // 【代码2】
Scanner scan = new Scanner(s);
scan.useDelimiter("[12:29#]+");
str = scan.next();
System.out.println(scan.next()); // 【代码3】
}
}
这道题考察StringTokenizer类的用法。StringTokenizer fenxi = new StringTokenizer(s, "wid:th,eg#");
将字符序列s分解,第二个参数的字符序列中的字符的任意排列被作为了分隔标记。
因此,s被分解成了height:1229和2912。调用countTokens()方法返回分析器中计数变量的值,即为2。
接着调用了两次nextToken()方法逐个获取String对象的字符序列中的语言符号(单词),所以第二次输出的是2912。接着使用Scanner对象的useDelimiter(正则表达式)方法将正则表达式作为分隔标记。所以s分解成了height和width,第二次调用next方法输出width。
已知应用程序中已经有如下的刻画矩形的Rect类:
Java
abstract class Rect{
int width;//矩形的宽
int height;//矩形的高
final void setWidth(int w){//不能重写
width = w>0?w:0;
}
final void setHeight(int h){
height = h>0?h:0;
}
abstract int getArea();//计算矩形的面积
}
请完成如下任务:
(1)编写一个Rect类的子类Rectangle,在你的Rectangle子类中新增加一个返回矩形周长的方法(方法的名字考生可自己定义)。
(2)在应用程序的主类的main方法中用你的Rectangle类创建对象,完成输出宽是12高是8的矩形的面积和周长的任务。
Java
class Rextangle extends Rect{
int getArea(){ //父类中的该方法是抽象的,必须重写
return width*height;
}
int getLength(){
return 2*(width+height);
}
}
class Code{
public static void main(String args[]){
Rectangle a = new Rectangle();
a.setWidth(12);//或a.width=12;
a.setHeight(8);//或a.height=8;
System.out.println(a.getArea());
System.out.println(a.getLength());
}
}
编写一个GUI程序。功能要求如下:
窗口(需要编写JFrame的子类)的标题为“计算园面积和周长”,窗口布局为FlowLayout布局,设置窗口大小为(400,180),设置窗口可见,单机窗口右上角关闭图标可以关闭该窗口。
窗口中有一个文本框(JTextField),两个标签(JLable)和两个按钮(JButton)。两个按钮上的文字分别是“计算园面积”和“计算园周长”。
用户在文本框中输入圆的半径,单击“计算圆面积”按钮,程序在一个标签中显示园的面积,单击“计算圆周长”按钮,程序在另一个标签中显示园的周长。
Java
public class test {
public static void main(String args[]) {
StuWindow stu = new StuWindow();
}
}
Java
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class StuWindow extends JFrame {
JTextField inputRadius;// 输入半径
JLabel showArea;// 显示面积
JLabel showCirlceLength;// 显示周长
JButton computerArea;// 计算面积
JButton computerCirlceLength;// 计算周长
Police listener; // listener是监视器
public StuWindow() {
setLayout(new FlowLayout());
setSize(400, 300);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
validate();
inputRadius = new JTextField(10);
showArea = new JLabel();
showCirlceLength = new JLabel();
computerArea = new JButton("计算圆面积");
computerCirlceLength = new JButton("计算圆周长");
add(inputRadius);
add(computerArea);
add(computerCirlceLength);
add(showArea);
add(showCirlceLength);
listener = new Police();
computerArea.addActionListener(listener);
computerCirlceLength.addActionListener(listener);
listener.setJButton(computerArea, computerCirlceLength);
listener.setJLabel(showArea, showCirlceLength);
listener.setJTextField(inputRadius);
}
}
Java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Police implements ActionListener {
JTextField inputRadius;
JLabel showArea;
JLabel showCirlceLength;
JButton computerArea;
JButton computerCirlceLength;
public void setJButton(JButton... b) {
computerArea = b[0];
computerCirlceLength = b[1];
}
public void setJLabel(JLabel... b) {
showArea = b[0];
showCirlceLength = b[1];
}
public void setJTextField(JTextField... b) {
inputRadius = b[0];
}
@Override
public void actionPerformed(ActionEvent e) {
double r = Double.parseDouble(inputRadius.getText());
if (e.getSource() == computerArea) {
showArea.setText("面积:" + Math.PI * r * r);
}
if (e.getSource() == computerCirlceLength) {
showCirlceLength.setText("周长:" + 2 * Math.PI * r);
}
}
}