搜档网
当前位置:搜档网 › java第四章课后习题解答

java第四章课后习题解答

java第四章课后习题解答
java第四章课后习题解答

第4章图形用户界面设计

【1】什么是图形用户界面?试列举出图形用户界面中你使用过的组件。

[解答]:图形用户界面或图形用户接口(Graphical User Interface,GUI)是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。(比如你用windowsXP和使用DOS操作系统的差别)。GUI是事件驱动的,也就是说,一旦用户与GUI交互,GUI组件就会生成”事件“(动作)。常见交互包括移动鼠标、单击鼠标按钮、在文字段输入、从菜单选择一个选项以及关闭一个窗口等等。

在windwosXP的GUI中,使用过窗口,菜单条,按钮等#

【2】简述Java的事件处理机制。什么是事件源?什么是监听者?在Java的图形用户界面中,谁可以充当事件源?谁可以充当监听者?

[解答]:java的事件处理机制就是,事件源允许监听器注册的事件对象,在事件发生的时候想相关的注册对象发送一个,事件对象,监听器便根据相关的信息来选择运行相关的代码。

事件源:英文名为event source,是指事件发生的地方,也就是引起事件的组件,按钮Button,文本组件等都可以当做事件源。比如说,你点击一个button,那么button就是事件源,要想使button对某些事件进行响应,你就需要注册特定的监听者。(具体请看第5章的事件处理)

监听者:英文名为event handler事件处理者,又叫监听器。具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。

在java中,AWT组件和swing组件都可以当做事件源;java.awt.event.*,里面各种类都可以为监听者。

【3】动作事件的事件源可以有哪些?如何响应动作事件?

[解答]:动作事件的事件源可以有:Button,JButton,MenuItem,等。

响应动作事件的过程一般为:

声明和实例化事件源,如:Button btn=new Button(“确定”);

注册监听:btn.addActionListener(this); //this指明是在当前类实现处理

实现接口:public void actionPerformed(ActionEvent e){//具体代码};

【4】说明文本框与标签之间的区别。

[解答]:文本框(TextField)和标签(Label)都可以进行文字表达。TextField允许用户编辑单行文本的文本组件,他可以添加相应的监听事件;而Label 对象是一个可在容器中放置文本的组件。一个标签只显示一行只读文本。文本可由应用程序更改,但是用户不能直接对其进行编辑。

【5】编写程序包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。

[解答]:Test4_5.java

import java.awt.*;

import java.awt.event.*;

public class Test4_5 extends Frame implements ActionListener{

Label lb;

TextField txtFl;

Button btn;

public Test4_5(){

//界面布局和初始化

super("文本框和标签的练习");

setSize(260,200);

setVisible(true);

setLayout(new FlowLayout());

lb=newLabel(" ");//用空格占位,以防止label个别字符出现问题

txtFl=new TextField(20);

btn=new Button("显示字符");

add(txtFl);add(btn);

add(lb);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){

System.exit(0);

}} );

validate();

//增加监听

btn.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

String strtmp=txtFl.getText();

lb.setText(strtmp);

lb.setForeground(Color.red);

}

public static void main(String[] args){

new Test4_5();

}

}

【6】设计一个加法计算器,如图4.25所示(课本P124),在文本框中输入两个整数,单击“=”按钮时,在第三个文本框中显示这两个数据的和。

[解答]:Test4_6.java

import java.awt.*;

import java.awt.event.*;

class Test4_6 extends Frame implements ActionListener {

TextField txtFl1,txtFl2,txtFl3;

Button btn;

public Test4_6(){

super("简单加法运算器");

setSize(300,200);

setVisible(true);

setLayout(new FlowLayout());

txtFl1=new TextField(5);

txtFl2=new TextField(5);

txtFl3=new TextField(10);

btn=new Button("=");

add(new Label("请输入整数"));

add(txtFl1);

add(new Label("+"));

add(txtFl2);

add(btn);

add(txtFl3);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){

System.exit(0);

}} );

validate();

btn.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

int add=Integer.parseInt(txtFl1.getText()) +Integer.valueOf(txtFl2.getText()).intValue();//两种字符串转整形的方法

txtFl3.setText(String.valueOf(add));

}

public static void main(String[] args){

new Test4_6();

}

}

【7】说明文本框与文本区之间的区别,它们都可以引发什么事件?如何响应此事件?[解答]:TextField 对象是允许编辑单行文本的文本组件。

TextArea 对象是显示文本的多行区域。可以将它设置为允许编辑或只读

TextFiled和TextArea可以引用KeyEvent,ActionEvent,分别用使用组件的addKeyListener 方法注册和addActionListener以接收事件。

【8】设计一个计算器,其中要使用按钮、文本框、布局管理和标签等构件,能实现加、减、乘、除运算。

[解答]:Text4_8.java

import java.awt.*;

import java.awt.event.*;

public class Test4_8 extends Frame implements ActionListener{

TextField txtFl1,txtFl2,txtFl3;

Button btn1,btn2,btn3,btn4,btn5;

public Test4_8(){

super("简单的四则运算器");

setSize(300,400);

setVisible(true);

setLayout(new GridLayout(3,1));

txtFl1=new TextField(5);

txtFl2=new TextField(5);

txtFl3=new TextField(5);

btn1=new Button("+");

btn2=new Button("-");

btn3=new Button("*");

btn4=new Button("÷");

Panel p1=new Panel();p1.add(txtFl1);p1.add(txtFl2);p1.add(new Label("="));p1.add(txtFl3);

Panel p2=new Panel();p2.add(btn1);p2.add(btn2);p2.add(btn3);p2.add(btn4);

add(new Label("请在下面输入运算数并运算规则进行运算:"));

add(p1);

add(p2);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){

System.exit(0);

}} );

validate();

btn1.addActionListener(this);

btn2.addActionListener(this);

btn3.addActionListener(this);

btn4.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

float num1=Float.valueOf(txtFl1.getText()).floatValue();

float num2=Float.valueOf(txtFl2.getText()).floatValue();//两种字符串转整形的方法

float rs=0;

if (e.getSource()==btn1){

rs=num1+num2;

txtFl3.setText(String.valueOf(rs));

}

else if (e.getSource()==btn2) {

rs=num1-num2;

txtFl3.setText(String.valueOf(rs));

}

else if (e.getSource()==btn3) {

rs=num1*num2;

txtFl3.setText(String.valueOf(rs));

}

else if (e.getSource()==btn4) {

rs=num1/num2;

txtFl3.setText(String.valueOf(rs));

}

}

public static void main(String[] args){

new Test4_8();

}

}

【9】创建一个窗体,窗体中有一个按钮,当单击按钮后,就会弹出一个新窗体。

[解答]:Test4_9.java

import java.awt.*;

import java.awt.event.*;

public class Test4_9 extends Frame implements ActionListener{

Button btn;

public Test4_9(){

super("弹出窗口练习");

setSize(300,200);

setVisible(true);

setLayout(new BorderLayout());

btn=new Button("点击我会弹出窗口");

Panel p1=new Panel();

p1.add(new Label(" "));

p1.add(btn);

p1.add(new Label(" "));

add("South",p1);

validate();

addWindowListener(new WindowAdapter()

{public void windowClosing(WindowEvent e)

{System.exit(0);}

});

btn.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

new Test4_9();

}

public static void main(String[] args){

new Test4_9();

}

}

【10】编写图形界面的Application程序,该程序包含一个菜单,选择这个菜单的“退出”选项可以关闭Application的窗口并结束程序。

[解答]:Test4_10.java

import java.awt.*;

import java.awt.event.*;

public class Test4_10 extends Frame {

MenuBar mbar;

Menu file,edit,help;

MenuItem file_open,file_new,file_exit;

MenuItem edit_copy,edit_cut;

MenuItem help_about;

public Test4_10(){

super("菜单Application程序");

setSize(400,300);

setVisible(true);

mbar=new MenuBar();

setMenuBar(mbar);

file=new Menu("文件");

edit=new Menu("编辑");

help=new Menu("帮助");

mbar.add(file);

mbar.add(edit);

mbar.add(help);

file_new=new MenuItem("新建");

file_open=new MenuItem("打开");

file_exit=new MenuItem("退出");

file.add(file_new);

file.add(file_open);

file.addSeparator();

file.add(file_exit);

edit_copy=new MenuItem("复制");

edit_cut=new MenuItem("粘贴");

edit.add(edit_copy);

edit.add(edit_cut);

help_about=new MenuItem("关于");

help.add(help_about);

validate();

}

public static void main(String[] args){

new Test4_10();

}

}

【11】什么是容器的布局?试列举并简述Java中常用的几种布局策略。

[解答]:AWT容器分为两类:外部容器和内部容器。其中,外部容器一般会独立存在,例如Frame类;而内部容器则会嵌套在外部容器内部使用,例如Panel类。容器的布局是指对添加的各个组件进行有序的、统一的对位置进行编排,使其更加美观。

(下面的例子参照网上https://www.sodocs.net/doc/1f14375778.html,/bookfiles/347/10034713585.shtml)

1.顺序布局

顺序布局(Flow Layout)是最基本的一种布局,面板的默认布局就是顺序布局。顺序布局指的是把图形元件一个接一个地放在面板上。下面是一个顺序布局的例子。

package sample;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MyFlowLayout {

private Frame f;

private Button button1, button2, button3;

public static void main (String args[]) {

MyFlowLayout mflow = new MyFlowLayout ();

mflow.go();

}

public void go() {

f = new Frame ("FlowLayout演示");

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt) {

f.setVisible(false);

f.dispose();

System.exit(0);

}

});

//f.setLayout(new FlowLayout());

f.setLayout(new FlowLayout(FlowLayout.LEADING, 20, 20));

button1 = new Button("确定");

button2 = new Button("打开");

button3 = new Button("关闭");

f.add(button1);

f.add(button2);

f.add(button3);

f.setSize (200,200);

f.pack();

f.setVisible(true);

}

}

程序运行结果见图10-3。

图10-3 顺序布局(Flow Layout)

2.边界布局

边界布局(Border Layout)包括5个区:北区、南区、东区、西区和中区。这5个区在面板上的分布规律是“上北下南,左西右东”。下面是一个边界布局的例子。

package sample;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MyBorderLayout {

Frame f;

Button east, south, west, north, center;

public static void main(String args[]) {

MyBorderLayout mb = new MyBorderLayout();

mb.go();

}

public void go() {

f = new Frame("BorderLayout 演示");

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt) {

f.setVisible(false);

f.dispose();

System.exit(0);

}

});

f.setBounds(0, 0, 300, 300);

f.setLayout(new BorderLayout());

north = new Button("北");

south = new Button("南");

east = new Button("东");

west = new Button("西");

center = new Button("中");

f.add(BorderLayout.NORTH, north);

f.add(BorderLayout.SOUTH, south);

f.add(BorderLayout.EAST, east);

f.add(BorderLayout.WEST, west);

f.add(BorderLayout.CENTER, center);

f.setVisible(true);

}

}

程序运行结果见图10-4。

图10-4 边界布局(Border Layout)

3.网格布局

网格布局(Grid Layout)把面板分成一个个大小相等的网格,你可以给出网格的行数和列数。下面是一个网格布局的例子。

package sample;

import java.awt.*;

import java.awt.event.*;

public class MyGridLayout {

private Frame f;

private Button[] btn;

public static void main(String args[]) {

MyGridLayout grid = new MyGridLayout();

grid.go();

}

public void go() {

f = new Frame("GridLayout演示");

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt) {

f.setVisible(false);

f.dispose();

System.exit(0);

}

});

f.setLayout (new GridLayout (3, 3, 10, 10));

btn = new Button[9];

for(int i = 0; i <=8; i++) {

int j = i + 1;

btn[i] = new Button("" + j);

f.add(btn[i]);

}

// f.pack();

f.setSize(100, 100);

f.setVisible(true);

}

}

程序运行结果见图10-5。

图10-5 网格布局(Grid Layout)

4.卡片布局

卡片布局(Card Layout)把每个组件看作一张卡片,好像一副扑克牌,它们叠在一起,每次只有最外面的一个组件可以被看到。

package sample;

import java.awt.*;

import java.awt.event.*;

public class MyCardLayout {

public static void main(String args[]) {

new MyCardLayout().go();

}

public void go() {

final Frame f = new Frame("CardLayout演示");

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt) {

f.setVisible(false);

f.dispose();

System.exit(0);

}

});

f.setSize(300, 100);

f.setLayout(new CardLayout());

final Frame f1 = f;

for(int i = 1; i <= 5; ++i) {

Button b = new Button("Button " + i);

b.setSize(100, 25);

b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

CardLayout cl = (CardLayout)f1.getLayout();

cl.next(f1);

}

} );

f.add(b, "button" + i);

}

f.setVisible(true);

}

}

程序运行结果见图10-6。

图10-6 卡片布局(Card Layout)

单击按钮Button1后,显示下一个按钮Button2,依此类推。

5.网格包布局

网格包(GridBag)布局是基于网格布局之上的一种改进。和基本的网格布局不同的是,一个组件可以跨越一个或多个网格,这样一来增加了布局的灵活性。为了处理网格的跨越性,我们可以使用GridBagConstraints类。有兴趣的读者可以参考Java API来了解它。

package sample;

import java.awt.*;

import java.util.*;

import java.awt.event.*;

public class MyGridBagLayout extends Panel {

protected void makebutton(String name,

GridBagLayout gridbag,

GridBagConstraints c) {

Button button = new Button(name);

gridbag.setConstraints(button, c);

add(button);

}

public void go() {

GridBagLayout gridbag = new GridBagLayout();

GridBagConstraints c = new GridBagConstraints();

setFont(new Font("Helvetica", Font.PLAIN, 14));

setLayout(gridbag);

c.fill = GridBagConstraints.BOTH;

c.weightx = 1.0;

makebutton("Button001", gridbag, c);

makebutton("Button2", gridbag, c);

makebutton("Button3", gridbag, c);

c.gridwidth = GridBagConstraints.REMAINDER; //end row

makebutton("Button4", gridbag, c);

c.weightx = 0.0; //reset to the default

makebutton("Button5", gridbag, c); //another row

c.gridwidth = 2; //GridBagConstraints.RELATIVE; //next-to-last in row

makebutton("Button6", gridbag, c);

c.gridwidth = GridBagConstraints.REMAINDER; //end row

makebutton("Button007", gridbag, c);

c.gridwidth = 1; //reset to the default

c.gridheight = 2;

c.weighty = 1.0;

makebutton("Button8", gridbag, c);

c.weighty = 1.0; //reset to the default

c.gridwidth = GridBagConstraints.REMAINDER; //end row

c.gridheight = 1; //reset to the default

makebutton("Button9", gridbag, c);

makebutton("Button10", gridbag, c);

setSize(300, 100);

}

public static void main(String args[]) {

final Frame f = new Frame("GridBagLayout 演示");

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt) {

f.setVisible(false);

f.dispose();

System.exit(0);

}

});

MyGridBagLayout gb = new MyGridBagLayout();

gb.go();

f.add("Center", gb);

f.pack();

f.setVisible(true);

}

}

程序运行结果见图10-7。

图10-7 网格包(GridBag)布局

【12】根据本章所学的内容编程:设计一个模拟的文字编辑器,并用菜单实现退出的功能。[解答]:Test4_12.java

import java.awt.*;

import java.awt.event.*;

public class Test4_12 extends Frame implements ActionListener{

MenuBar mbar;

Menu file,edit,help;

MenuItem file_open,file_new,file_save,file_exit;

MenuItem edit_copy,edit_cut,edit_pase,edit_del;

MenuItem help_about;

Button btn_copy,btn_pase,btn_cut,btn_del;

TextArea txtAr;

boolean ifdo;

StringBuffer strtmp;

public Test4_12(){

super("菜单Application程序");

setSize(400,300);

setVisible(true);

setLayout(new BorderLayout());

mbar=new MenuBar();

setMenuBar(mbar);

strtmp=new StringBuffer();

file=new Menu("文件");

edit=new Menu("编辑");

help=new Menu("帮助");

mbar.add(file);

mbar.add(edit);

mbar.add(help);

file_new=new MenuItem("新建");

file_open=new MenuItem("打开");

file_open.setEnabled(false);

file_save=new MenuItem("保存");

file_save.setEnabled(false);

file_exit=new MenuItem("退出");

file.add(file_new);

file.add(file_open);

file.add(file_save);

file.addSeparator();

file.add(file_exit);

edit_copy=new MenuItem("复制",new MenuShortcut(KeyEvent.VK_C));

edit_pase=new MenuItem("粘贴",new MenuShortcut(KeyEvent.VK_V));

edit_cut=new MenuItem("剪切",new MenuShortcut(KeyEvent.VK_X));

edit_del=new MenuItem("删除",new MenuShortcut(KeyEvent.VK_DELETE)); edit.add(edit_copy);

edit.add(edit_pase);

edit.add(edit_cut);

edit.add(edit_del);

help_about=new MenuItem("关于");

help.add(help_about);

txtAr=new TextArea(8,10);

Panel p1=new Panel();

btn_copy=new Button("复制");

btn_cut=new Button("剪切");

btn_pase=new Button("粘贴");

btn_del=new Button("删除");

p1.setLayout(new FlowLayout(FlowLayout.LEFT));

p1.add(btn_copy);p1.add(btn_cut);p1.add(btn_pase);p1.add(btn_del);

add("North",p1);

add("Center",txtAr);

validate();

file_new.addActionListener(this);

file_open.addActionListener(this);

file_save.addActionListener(this);

file_exit.addActionListener(this);

edit_copy.addActionListener(this);

edit_pase.addActionListener(this);

edit_cut.addActionListener(this);

edit_del.addActionListener(this);

help_about.addActionListener(this);

btn_copy.addActionListener(this);

btn_cut.addActionListener(this);

btn_pase.addActionListener(this);

btn_del.addActionListener(this);

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){

System.exit(0);

}} );

}

public void actionPerformed(ActionEvent e){

if (e.getSource()==file_new){

txtAr.setText(null);

}

else if (e.getSource()==file_open){

}

else if (e.getSource()==file_save){

}

else if (e.getSource()==file_exit){

System.exit(0); //退出

}

else if (e.getSource()==edit_copy||e.getSource()==btn_copy){ //复制的实现

strtmp.delete(0,strtmp.length());

strtmp.append(txtAr.getSelectedText());

}

else if (e.getSource()==edit_pase||e.getSource()==btn_pase){ //粘贴的实现

txtAr.insert(strtmp.toString(),txtAr.getSelectionEnd());

}

else if (e.getSource()==edit_cut||e.getSource()==btn_cut){ //剪切的实现

strtmp.delete(0,strtmp.length());

strtmp.append(txtAr.getSelectedText());

String strtmp1=new String(txtAr.getText().substring(0,txtAr.getSelectionStart()));

String strtmp2=new String(txtAr.getText().substring(txtAr.getSelectionEnd(),txtAr.getText().length())); //返回一个新的String,它包含此序列当前所包含的字符子序列。

txtAr.setText(strtmp1+strtmp2);

}

else if(e.getSource()==edit_del||e.getSource()==btn_del){

String strtmp1=new String(txtAr.getText().substring(0,txtAr.getSelectionStart()));

String strtmp2=new String(txtAr.getText().substring(txtAr.getSelectionEnd(),txtAr.getText().length())); //返回一个新的String,它包含此序列当前所包含的字符子序列。

txtAr.setText(strtmp1+strtmp2);

}

}

public static void main(String[] args){

new Test4_12();

}

}

【13】创建一个输入对话框,从对话框中输入文字,当按下“确定”按钮后,能在屏幕上显示输入的文字。

[解答]:Test4_13.java

import java.awt.*;

import java.awt.event.*;

class Test4_13 extends Frame implements ActionListener{

TextArea txtAr;

Button btn1;

public Test4_13(){

super("对话框练习");

setSize(300,400);

setVisible(true);

setLayout(new BorderLayout());

btn1=new Button("打开对话框");

txtAr=new TextArea(8,10);

add("North",btn1);

add("Center",txtAr);

validate();

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){

System.exit(0);

}} );

btn1.addActionListener(this);

}

public void actionPerformed(ActionEvent e){

DiaObj dia=new DiaObj(this,txtAr); //声明和实例话对话框,传递frame,和txtar参数

}

public static void main(String[] args){

new Test4_13();

}

}

class DiaObj implements ActionListener {

Frame fr=new Frame();

TextArea txtAr2=new TextArea(8,10);

TextField txtFl=new TextField(20);

Button btnSend=new Button("发送文字");

Dialog dia;

//初始化DiaObj,并定义参数fr,txtAr2

public DiaObj(Frame fr,TextArea txtAr2){

this.txtAr2=txtAr2;

this.fr=fr;

dia=new Dialog(fr,"传递消息对话框..",true);

dia.setSize(200,100);

dia.setLayout(new FlowLayout());

dia.add(txtFl);

dia.add(btnSend);

btnSend.addActionListener(this);

dia.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we){ dia.setVisible(false); //退出对话框}} );

dia.validate();

dia.setVisible(true);

}

public void actionPerformed(ActionEvent e){

txtAr2.append(txtFl.getText()+"\n");

txtFl.setText("");//清空内容

}

}

java课后题答案

第1章Java概述 1.编译java application源程序文件将产生相应的字节码文件,这些字节码文件别 的扩展名为、java 2.执行一个java程序fristapp的方法就是运行java fristapp 3.main()方法的返回类型就是void 4.在java代码中,public static void main方法的参数描述正确的就是string args 【】,string【】args 5.内存的回收程序负责释放无用内存√ 6.java体系主要分为java ME,Java SE,JavaEE三大块 第2章Java基础 1.Java语言中,下列标识符错误的就是40name 2.java变量中,以下不属于引用类型的数据类型就是字符型 3.double d=5、3E12 × 4.C 5.A 6.for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确 的就是初值与增量都就是赋值语句,终值就是条件判断语句 7.当输入下面选项中3值时,将会输出default 8.下面哪种方法能够支持javadoc命令/**…*/ 9.下面声明一个string类型的数组正确的就是string str[] 10.下面定义一个整型数组,不合法的就是int[][]array=new int[][4]; 11.给定代码;。。。。。下面叙述正确的就是输出的结果为:0 12.java语言规定,标示符只能由字母,数字美元符$与下划线租成,并且第一个 字符不能就是数字;java就是区分大小写的。 13.表达式1/2*3的计算结果就是0;设x=2,则表达式(x++)/3的值就是0 14.数组的长度可以用其属性lengt h获得;创建一个数组对象可以使用new关键 字创建 第3章面向对象基础 1.在java中引用对象变量与对象间有什么关系?引用变量就是指向对象的一个指针 2.对象就是面向对象技术的核心所在,在面向对象程序设计中,对象就是累的抽象× 3.构造方法何时被调用?创建对象时 4.A,B,D 5.在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2、在类c中 要使用类a的方法与类b的方法b,需要选择import p1、*; import p1、p2,*;

JAVA课后练习题

P37 3.编程题 (1)球体的体积计算公式为4/3πr3,编写一个程序输入半径,求体积。 import javax.swing.*; public class volume{ public static void main(String args[]){ String s=JOptionPane.showInputDialog("请输入半径:"); double r=Double.parseDouble(s); double volume=Math.PI*r*r*r*4/3; "圆的体积=%.3f",volume); } } (2) 输入矩形的长和宽,计算矩形的周长和面积。 import javax.swing.*; public class jx{ public static void main(String args[]){ String a=JOptionPane.showInputDialog("请输入长:"); double length=Double.parseDouble(a); String b=JOptionPane.showInputDialog("请输入宽:"); double wide=Double.parseDouble(b); double area=length*wide; double c=length*2+wide*2; "矩形面积=%.3f",area); "矩形周长=%.3f",c); } } (3)从键盘输入摄氏温度C,计算华氏温度F的值并输出.其转换公式如下: F=(9/5) C+32 import javax.swing.*; public class Test3 { public static void main(String args[]) { String x= JOptionPane.showInputDialog("请输入摄氏温度:"); double r= Double.parseDouble(x); double F= (9/5)*r+32; "华氏温度=%f",F); }

java课后答案

java课后答案 第一章 ,.发明java的原因是什么,发明java的主要贡献者是谁, 答:开发java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。当时,c语言已无法满足人们的这一愿望,因为c语言总是针对特定的芯片将源程序编译成机器码,该机器码的运行就与特定的芯片指令有关,在其他类型的芯片上可能无法运行或者运行出错。主要贡献者是James Gosling。 2.“java编译器将源文件编译生成的字节码是机器码”,这句话正确吗, 答:不正确,字节码是很接近机器码谢谢了的二进制文件,不能被机器直接识别。 3. java应用程序的主类必须含有怎么样的方法, 4. "java应用程序必须有一个类是public类".这句话正确吗, 答:一个java应用程序必须有一个类含有public static void main(String args[] )方法,称为该应用程序的主类。 5. "java applet程序的主类必须是public类",这句话正确吗, 不正确 "java applet源文件的主类必须是public类",这句话正确吗, 正确 6. 叙述java源文件的命名法则。 答:(1)如果源文件中有多个类,那么只能有一个类是public类。(2)如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名 为.java(3)如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名为.java就可以了。(4)java语言区分大小写。 7. 源文件生成的的字节码运行时加载到内存中吗, 8. 怎样编写加载运行java applet的简单网页,

通信原理(陈启兴版)第4章课后习题答案

第四章 模拟调制 4.1 学习指导 4.1.1 要点 模拟调制的要点主要包括幅度调制、频率调制和相位调制的工作原理。 1. 幅度调制 幅度调制是用调制信号去控制载波信号的幅度,使之随调制信号作线性变化的过程。在时域上,已调信号的振幅随基带信号的规律成正比变化;在频谱结构上,它的频谱是基带信号频谱在频域的简单平移。由于这种平移是线性的,因此,振幅调制通常又被称为线性调制。但是,这里的“线性”并不是已调信号与调制信号之间符合线性变换关系。事实上,任何调制过程都是一种非线性的变换过程。 幅度调制包括标准调幅(简称调幅)、双边带调幅、单边带调幅和残留边带调幅。 如果调制信号m (t )的直流分量为0,则将其与一个直流量A 0相叠加后,再与载波信号相乘,就得到了调幅信号,其时域表达式为 []()()()AM 0c 0c c ()()cos cos ()cos (4 - 1)s t A m t t A t m t t ωωω=+=+ 如果调制信号m (t )的频谱为M (ω),则调幅信号的频谱为 [][]AM 0c c c c 1 ()π()()()() (4 - 2)2 S A M M ωδωωδωωωωωω=++-+ ++- 调幅信号的频谱包括载波份量和上下两个边带。上边带的频谱结构与原调制信号的频谱结构相同,下边带是上边带的镜像。由波形可以看出,当满足条件 |m (t )| ≤ A 0 (4-3) 时,其包络与调制信号波形相同,因此可以用包络检波法很容易恢复出原始调制信号。否则,出现“过调幅”现象。这时用包络检波将发生失真,可以采用其他的解调方法,如同步检波。 调幅信号的一个重要参数是调幅度m ,其定义为 [][][][]00max min 00max min ()() (4 - 4)()()A m t A m t m A m t A m t +-+=+++ AM 信号带宽B AM 是基带信号最高频率分量f H 的两倍。 AM 信号可以采用相干解调方法实现解调。当调幅度不大于1时,也可以采用非相干解调方法,即包络检波,实现解调。 双边带信号的时域表达式为 ()DSB c ()()cos (4 - 5)s t m t t ω= 其中,调制信号m (t )中没有直流分量。 如果调制信号m (t )的频谱为M (ω),双边带信号的频谱为 []DSB c c 1 ()()() (4 - 6)2 S M M ωωωωω= ++-

Java基础入门课后习题及答案

《Java基础入门》课后习题 第1章Java开发入门 一、填空题 1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。 2、Java程序的运行环境简称之为JRE_____。 3、编译Java程序需要使用_javac_____命令。 4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。 5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用 来保存保存Java虚拟机要运行的“.class”文件路径。 二、选择题 1、以下选项中,哪些属于JDK工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 3、下面哪种类型的文件可以在Java虚拟机中运行?D A、.java B、.jre C、.exe D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?B A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器 5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java 命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;

java入门到精通课后练习和答案(1-6章)

1.9练一练 一.填空题 1.运行编译后的class文件,需要输入命令java 2.JVM是指java虚拟器 3.Java程序源文件扩展名为java 二,简答题 1.简述java语言的特点 (1)简洁有效(2)可移植性(3)面向对象(4)解释型(5)适合分布式计算 2.java虚拟器的作用是什么? 答:保证编译后的java代码能够在安装java虚拟器的系统上运行。 2.5练一练 一.填空题 1.java程序是从main()处开始运行的。 2.在java中,多行注释的开始和结束标记分别为/*和*\。 3.声明1个名称“count”的整形变量的语句为int count; 4.Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 二、简答题 1.简述设置变量的3种方法。 (1)在声明前设置 (2)在声明后设置 (3)在任何位置声明设置 2.简述提高程序可读性的两种方法。 *添加注释*使用缩进方法编写 3.4练一练 1.Eclipse是IBM花巨资开发的IDE集成开发环境(Intergrated Development Environment)。 2.【源代码】菜单中所包含的命令都是和代码编写相关的,主要用于源代码工作。 3.选择【文件】>【新建】>【项目...】命令,打开【新建项目】对话框。 二.简答题 1.Eclipse提供了哪两种程序调试方式? *java应用程序*调试 2.取消Eclipse启动时出现的设置工作空间的对话框的具体方法是什么? Eclipse启动时在【设置工作空间】的对话框中选中【将此值用作缺省值并且不再询问】复选框。 4.3练一练 1.变量是利用声明的方式,将内存中的某个块保留下来以供程序使用 2.常量就是固定不变的量,一旦被定义,它的值就不能再被改变。 3.当常量用于一个类的成员变量时,必须给常量赋值,否则会出现编译错误。 二.简答题 1.简述变量的命名规则 Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 2.按作用范围划分,变量是如何划分的?

第四章课后习题与答案

第四章课后习题与答案 1.媒体包含媒质和媒介两个方面的含义。媒质是指存储信息的实体;媒介是指表示和传递信息的载体,即信息的表现形式。 媒体可分为五种类型:感觉媒体、表示媒体、显示媒体、存储媒体、传输媒体。 2.多媒体是上述各种感觉媒体的综合体,即将多媒体定义为文字、图象、声音等多种不同形式的信息表达方式。 主要特征是:多样性、集成性和交互性。多样性是相对于传统计算机而言的,指信息载体的多样化,即计算机中信息表达方式的多样化,这一特征使计算机能处理的信息空间范围更加广阔,使人机交互界面更加人性化。集成性包括媒体信息的集成和处理媒体信息的设备或工具的集成,它是多媒体信息和多媒体设备的高速统一,是一次系统级的飞跃。交互性是多媒体技术的关键特征,这一特性将更加有效地为用户提供控制和使用信息的手段,没有交互性的多媒体作品是没有生命力的,有了交互性,使用者才能有效地获取信息。 3.音、视频信号往往都是模拟信号,必须将其进行数字化处理转换成数字视频信号。数字音频是对模拟声音信号每秒上千次的采样,然后把每个样值按一定的比特数量化,最后得到标准的数字音频的码流。对CD音质的信号来讲,每秒要44100次的采样,每个样值是16比特的量化,而立体声CD 音质信号,它每秒的码流是44.1K×16×2≈ 1.4Mbit/S。这样高的码流和容量,对于数字音频的存储、处理和传输提出了很高的要求。视频图像经过变换成为数字图像后产生了一系列问题。数字化后的视频信号的数据量十分巨大,需要大量的磁盘空间。对于PAL制电视来说,我国PAL/D.K制电视的视频带宽fc=6.0MHz,根据奈奎斯特定理,取样频率fs≥2fc。CCIR601建议书规定:亮度信号的取样频率为13.5MHz,色度信号的取样频率为6.75MHz,每个取样8bit,每有效行的取样数,亮度信号为720个,每个色差信号为360个。亮度信号和每个色差信号都采用线性PCM,那么传输PAL制彩色电视所需要的传输速率为:13.5×8+2×6.75×8=216Mb/s,要以25帧/秒的速率来播放数字视频信号,数据传输速率要达到216Mbit/s,即216Mbps左右,而现在各种传输技术的速度都远远达不到这个水平。现在最快的传输介质光纤,也只有100Mbps。以正常的速度传输、播放不压缩的数字视频信号是不可能的。 4.媒体素材包括文本、声音、图形、图象、视频和动画。 特点:(1)文本指各种字体、尺寸、格式及色彩的文本。文本数据可以使用文本编辑软件制作,应用于多媒体系统中可以使显示的信息更易于理解,是多媒体应用系统的基础。常见的文件格式有:TXT,DOC,WRI等。 (2)图形和图象 图形是指从点、线、面到三维空间的黑白或彩色几何图形,也称为矢量图。图形文件只记录生成图形的算法和图形上的某些特征点(如几何图形的大小、形状及其位置、颜色等),因此,图形文件的格式就是一组描述点、线、面等几何元素特征的指令集合,绘图程序通过读取这些指令,将其转换为屏幕上可显示的形状和颜色,从而生成图形。图形常用在网络和工程计算中。图象是由称为像素的点构成的矩阵,也称为位图。图象可以用图象处理软件制作,也可以通过扫描仪、数码相机等输入设备获得。常见的文件格式有:BMP,JPG、PCX等。(3)视频是指一组静态图象的连续播放,这里的连续既指时间上的连续,也指图象内容上的连续。计算机视频是数字化的,通常来自于录象带、摄象机等模拟视频信号源,经过数字化处理后成为数字视频文件。常见的文件格式有:A VI、MOV,MPG等。 (4)动画是活动的画面,是借助计算机生成的一系列连续运动的画面。用计算机实现的动

JAVA实用教程(第三版)课后习题答案

第一章Java语言概述 2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗? 答:不正确 3.java应用程序的主类必须含有怎样的方法? 答:含有main方法 4。“java应用程序必须有一个类是public类”这句话正确吗? 答;不正确,只能有一个public类 5。“java Applet程序的主类必须是public类”这句话正确吗? 答:正确,因为java Applet主类必须是Applet类的子类并且是public 的类 6。请叙述java源程序的命名规则。 答:与public的类同名。 7。源文件生成的字节码文件在运行时都加载到内存中吗? 答:非也,动态随需要运行才加载。 8.面向对象的程序设计语言有那些基本特征? 答:封装;继承;多态性。 9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类 第二章基本数据类型和数组 4。下列哪些语句是错的?

Int x=120; Byte b=120; b=x; 答:B=x;错应为b=(byte)x 5。下列哪些语句是错的? 答:y=d;错,应y=(float)d 6。下列两个语句是等价的吗? Char x=97; Char x=…a?; 答:是等价的。 7。下列system.out.printf语句输出结果是什么? Int a=97; Byte b1=(byte)128; Byte b2=(byte)(-129); System.out.printf(“%c,%d,%d”,a,b1,b2); 如果输出语句改为: System.out.printf(“%d,%d,%d”,a,b1,b2); 输出什么? 答:输出a ,-128,127 修改后输出97,-128,127 8.数组是基本数据类型吗?怎样获取数组的长度? 答:不是基本数据类型,是复合数据类型。可以通过:数组名.length

java课后习题及答案

第一章JA V A语言概论 一、选择题 1. 下列不属于java语言特点的是:B A. java能检查程序在变异和运行时的错误 B. java 能运行虚拟机实现跨平台 C. java 自己操纵内存减少了内存出错的可能性 D. java 还实现了真数组,避免了覆盖数据的可能 2. java语言的执行模式是:C A. 全编译型 B. 全解释型 C. 半编译和半解释型 D. 同脚本语言的解释模式 3. 下列关于虚拟机说法错误的是:B A. 虚拟机可以用软件实现 B. 虚拟机部可以用硬件实现 C. 字节码是虚拟机的机器码 D. 虚拟机把代码程序与各操作系统和硬件分开 4. java语言是1995年由()公司发布的A A. Sun B. Microsoft C. Borland D. Fox Software 5. 下列不是虚拟机执行过程特点的是A A. 双线程 B. 多线程 C. 动态链接 D. 异常处理 6. java以JVM为基础,最下层是移植接口,由适配器和()组成B A. 网卡 B. Java os C. Java基本类 D. Java 应用程序和applet小程序 7. java程序的执行过程中用到一套JDK工具,其中javac.exe指A A. java语言编译器 B. java字节码解释器 C. java文档生成器 D. java类分解器 8. java的API结构中,不属于类库主要包括的核心包的是C A. java包 B. javax C. javadoc包 D. org扩展包 9. 每个java的编译单元可包含多个类或界面,但是每个编译单元最多只能有()类或者界面是公共的A

第四章课后习题答案

4-8 一个半径为r =1m ,转速为1500r/min 的飞轮,受到制动,均匀减速,经时间t =50s 后静止,求:(1)飞轮的角加速度和飞轮的角速度随时间的关系;(2)飞轮到静止这段时间内转过的转数;(3)t =25s 时飞轮边缘上一点的线速率和加速度的大小。 解 (1)由于均匀减速,所以角加速度不变为 2015000.5/6050r r s s s β-= =-? 由角速度和角加速度的关系得 25/0 t r s d dt ω ωβ=? ? 得 250.5(/)t r s ω=- (2) d d d d dt dt d d ωωθωω βθθ = == 25/r s d d θβθωω=? ? 解得 625r θ= 所以转数为625 (3)由于250.5(/)t r s ω=- 所以t=25s 时 12.5/25(/)r s rad s ωπ== 所以线速率为 25(/)v r m s ωπ== 角加速度大小不变 4-9 某电机的转速随时间的关系为ω=ω0(1-e -t/τ ),式中,ω0=s ,τ=,求:(1) t =时的转速;(2)角加速度随时间变化的规律;(3)启动6s 后转过的圈数。 解 (1)t=60s 代入得 39(1)(/)8.6/e rad s rad s ω-=-= (2)由d dt ω β= 得 2 4.5t e β- = (3)由6 d dt θθω=?? 33618e θ-=+ [/2][5.87]5n θπ===

4-10 一个圆盘绕穿过质心的轴转动,其角坐标随时间的关系为θ(t )=γt+βt 3 ,其初始转速为零,求其转速随时间变化的规律。 解 由d dt θ ω= 得 23t ωγβ=+ 由于初始时刻转速为零,γ=0 23t ωβ= 4-11 求半径为R ,高为h ,质量为m 的圆柱体绕其对称轴转动时的转动惯量。 解 建立柱坐标,取圆柱体上的一个体元,其对转轴的转动惯量为 2 222 m m dJ dV d d dz R h R h ρρρρθππ== 积分求得 23220001 2 R h m J d d dz mR R h πρρθπ= =??? 4-12一个半径为R ,密度为ρ的薄板圆盘上开了一个半径为R/2的圆孔,圆孔与盘边缘相切。求该圆盘对通过圆盘中心而与圆盘垂直的轴的转动惯量。 解:把圆孔补上,取圆盘上一面元dS ,到转轴的距离为r ,则其转动惯量为 22dJ r dS r rdrd ρρθ== 积分得绕轴转动惯量为 23410 1 2 R J r drd R π ρθπρ==? ? 圆孔部分的绕轴转动惯量可由平行轴定理得 4 422213()()()222232 R R R R J πρπρρπ=+= 总的转动惯量为 4 121332 R J J J πρ=-= 4-13电风扇在开启电源后,经过t 1时间达到额定转速ω,当关闭电源后,经过t 2时间后停止转动,已知风扇转子的转动惯量为J ,并假定摩擦力矩和电动机的电磁力矩均为常量,求电动机的电磁力矩。 解:由转动定理得

java课后习题

第一章 (5)上机练习JAVA应用程序和小程序的运行方法。 第二章 (5)编写一个小程序(Applet)要求输入两个整数,在状态条显示较大的数,紧跟着显示“is larger”。若二者相等,显示“the two numbers are equal!”。 (6)编写一个模拟同时掷两个骰子的程序。要用Math.random()模拟产生第一个骰子,然后再产生第二个骰子,将两个结果相加,相加的和等于7的可能性最大,等于2和12的可能性最小。程序模拟掷3600次骰子,判断求和结果是否合理,共有6种情况的和是7,故在3600次掷骰子的结果中应有1/6的可能性是7。图2-2表示出了出现36种情况的组合。 1 2 3 4 5 6 图2-2 掷骰子的各种情况 第三章 (5)编程:编写一个applet,输入一个数,判断输入的这个数是否为回文数。所谓回文数就是从左向右看和从右向左看都一样。例如,121、13431都是回文数,而12345不是回文数。 (6)编写一个applet,采用下列公式计算e^x的值:e^x=1+(e^1)/1!+(e^2)/2!+……+(e^n)/n!。从键盘输入x和n,编程计算e^x的值。 (7)编程:产生20个int类型的随机数,针对每个数使用if-then-else判断它是大于、小于或等于下一个数(注意:最后一个数不参与比较)。 第四章 (3)定义一个圆类circle,它有一个变量radius(半径)。从键盘输出数据,通过构造函数的参数传递给radius,编程计算并输出圆的周长和面积。但是,必须确保输入的数据不为负数。 (4)定义一个整形集合类integerSet。这种类型的对象可以储存10个20~80之间的整数,

《Java程序设计》课后习题参考答案

习题1参考答案 1.Java语言的特点有哪些? 答:参考1.1.2 防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果要求类成员内部的一致性,就应该通过类本身的方法来处理。 这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作,这使代码维护更简单。 2.简述封装的优点。 答:封装是一个简单而有效的思想,优点有:(1)模块化,对内成为一个结构完整、可进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口单一、可在各种适合的环境下都能独立工作的有机单元。 面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。 3.Java的基本工具有哪些? (1)javac 编译器 (2)java 解释器 (3)jdb Java 语言调试器 (4)javadoc API文档管理器 (5)javah 头文件生成器 (6)appletviewer 小应用程序浏览器 (7)javap 类文件反汇编器 4.Java开发环境是如何配置的? 答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]窗口的[变量值]框后加上上面两条语句。 习题2参考答案 1.Java语言包含哪些数据类型? 答:包含基本数据类型和复合数据类型。基本类型包括整数类型、浮点数类型、布尔类型。复合类型包括类类型(Class Type)、接口类型(Interface Type)与数组类型(Array Type)。 2.Java有多少关键字? 答:abstract, continue, for, new, switch,boolean, default, goto*, null, synchronized,break, do, if, package, this,byte, double, implements, private, threadsafe,byvalve*, else, import, protected, throw,case, extends, instanceof, public, transient,catch, false, int, return, true,char, final,

国际金融第四章课后作业答案

第四章课后习题答案 一、判断题 1. X。补贴政策、关税政策和汇率政策都属于支出转换型政策。 2. X。外部均衡是内部均衡基础上的外部平衡,具体而言,反映为内部均衡实现条件下的国际收支平衡,它不能脱离内部均衡的条件。 3. X。丁伯根原则的含义是,要实现N个独立的政策目标,至少需要相互独立的N个有效的政策工具。将货币政策和财政政策分别应用于影响力相对较大的目标,以求得内外平衡是蒙代尔提出的政策指派原则的要求。 4. X .“蒙代尔分配法则”认为,财政政策解决内部均衡问题更为有效,货币政策解决外部平衡问题更为有效。 6. X。应使用紧缩的财政政策来压缩国内需求,紧缩的货币政策来改善国际收支。 7.√。 二、不定项选择题 1. B 2. D 3. BC 4. BD 5. A 6. BD 7. CDE(说明:一般而言,汇率变动会通过影响自发性贸易余额而引起BP曲线移动,但是,在资本完全流动的情况下,国际收支完全由资本流动决定,贸易收支的变动能够被资本流动无限抵销,此时的BP曲线反映为一条水平线,仅仅与国际利率水平有关) 8. ABD 9. CD 三、简答题 1.按照斯旺模型,当国际收支顺差和国内经济过热时,应当采取怎样的政策搭配? 答:斯旺模型用支出转换与支出增减政策搭配来解决内外均衡的冲突问题。政府的支出增减型政策(譬如财政政策)可以直接改变国内支出总水平,主要用来解决内部均衡问题。政府的支出转换型政策(譬如实际汇率水平的调节)可以改变对本国产品和进口产品的相对需求,主要用来解决外部平衡问题。当出现国际收支顺差和国内经济过热时,应当一方面缩减国内支出,一方面促进本币升值,从而使进口增加,并使国内支出中由国内供给满足的部分进一步减少,从而降低国际收支顺差和国内收人水平。 2.在斯旺的内外均衡分析框架中,当内外均衡时,国内的产出水平、就业水平是唯一的吗? 答:在斯旺模型中,内部均衡意味着本国生产的产品被全部销售掉,并且国内支出得到满足。当国内产出一定时,如果国内支出扩大,为了满足国内支出,就需要本币升值以减少出口或增加进口。外部平衡意味着净出口为零。当国内产出一定时,如果国内支出扩大,进口商品增加或出口商品减少,此时就需要本币贬值以同时增加出口或减少进口,以实现国际收支平衡。 可见,斯旺模型中推导的国内支出与实际汇率的关系,是在国内产出水平一定的条件下成立的。反过来说,如果国内产出水平可变,那么,无论是内部均衡还是外部平衡,在国内支出扩大时,只需要国内产出水平上升即可,不会发生进出口的变动,也不会影响实际汇率。所以,当斯旺模型的内外均衡同时成立时,国内的产出水平是唯一的,对应的是充分就业时的就业水平。 (说明:斯旺模型中的国内支出和净出口的关系,用文字描述可能较为难以理解,不妨用一些具体的数字来解释。 假设本国产出水平为100单位,原来处于内外均衡状态,具体而言,国内生产100单位的产品,其中出口20单位,国内支出100单位,其中80单位由国内生产的产品满足,20

java练习题答案

第1章java语言概述习题 一、填空题 1、面向对象程序的主要特征:继承,__封装___,___多态 _____。 2、java中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是 因为它使代码可以__重用或复用___. 3、java语言中,为将源代码翻译成 __字节码__文件时产生的错误称为编译错误, 而将程序在运行中产生的错误称为运行错误。 4、javac是java语言中的编译器,基本语法是:javac[选项] __文件名__,java 是java语言中的解释执行器,基本语法是:java[选项]___类名___. 5、java语言的主要贡献者是谁James gosling 二、[ 三、单选题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文 件的扩展名为( B)。 A、java B、.class C、html D、.exe 2、main方法是Java Application程序执行的入口点,关于main方法的方法首 部, 以下(B)项是合法的。 A、public static void main() B、public static void main(String args[]) C、public static int main(String[] arg) ) D、public void main(String arg[]) 三、判断 1、Java语言具有较好的安全性和可移植性及与平台无关等特性。√ 2、Java语言的源程序不是编译型的,而是编译解释型的。√ 四、问答题 1、编写、运行java程序需要经过哪些主要步骤 答:1.编写源文件,扩展名必须是.java 2.编写java源程序,使用java编译器编写源文件,得到字节码文件 ~ 3.运行java程序,使用javaSE平台只不过的java解释器来解释执行字 节码文件。 2、阅读下列java源代码文件,并回答问题 public class Speak{ void speakHello(){ "I'm glad to meet you"); } } … class Xiti8{

java语言程序设计课后习题答案解析

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1= =str2); //false String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1= =str2); //false 因此自符串如果是对内容进行比较,使用equals方法比较可靠。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1.equals(str2)); //true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2)); //true 5.编写一个程序,把变量n的初始值设置为1678,然后利用除法运算和取余运算把变量的每位数字都提出来并打印,输出结果为:n=1678。n的每位数字是1,6,7,8。若n为任意值呢? 法一: public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; int count; thousand=n/1000; count=n%1000; hundred=count/100; count=count%100; decimal=count/10; count=count%10; unit=count; System.out.println("1678包含的数 字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } //如果n为任意值 import java.io.*; public class Exercise51{ public static void main(String[] args) throws IOException{ System.out.print("请输入一个整数:"); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int length=input.length()-1; int n=new

java课后习题

Java编程习题 输出一行信息“This is a c program” 从键盘输入两个数,求较大者并输出 输入a,b,c三个值,输出其中最大者 求5! 从键盘输入一个大写字母,要求改用小写字母输出 写程序,判断某一年是否为闰年 求1+2+3+…+100的和 求2+4+6+…+100的和 求1+3+5+…+99的和 求1-/2+/3-/4+…+1/99-1/100的和 求Fibonacci数列前40个数,每行输出4个数 从键盘输入一个数,判断该数是否为素数 求100~200之间的全部素数 用冒泡法对10个数排序(由小到大) 有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号输出下列图形 * *** ***** 求一个3*3的整型矩阵主对角线元素之和。 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点 求10!,要求用递归实现 用选择法对数组中10个整数按由小到大排序 计算一个正整数的各位数字之和与之积。 编写一程序,从键盘输入一个5位数,判断该数是不是回文数。回文数是指个位数字与万位数字相同,十位数字与千位数字相同,例如12321是回文数。 求1+(1+2)+(1+2+3)+···+(1+2+3+···+10)的值 编程,输入一正整数,找出该数的各位数字中最大的一个数字。 打印以下图案: ***** ***** ***** ***** ***** 按以下规律打印10行字符。 * # # % % % * * * * # # # # #

% % % % % % ... … 请编写一个程序,输出1~1000之间的即被3整除,又被5整除的整数,并输出这样的数的个数。输出格式为每行输出5个数,数与数之间用逗号隔开,行尾没有逗号,在新的一行输出个数。 请编写一个程序,判断键盘输入的字符是否为数字,若是在下一行输出yes,若不是在下一行输出no,一次只能输入一个字符,总共可输入10次,结果在键入当前字符后立即输出。 目前人民币1元以下的币有1角、2角、5角三种,请计算出破开1元钱的方法有多少种。输出格式为一种方法一行,每行输出:1角n个、2角m个、5角j个。最后在新的一行中输出:Total=x,输出总计有多少种方法。 小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?输出:Total=n。 输出a~z字符的ASCII编码 输入一个2~99之间的数据,判断该数据是否是一个同构数。同构数是指该数出现在其平方数的右边,例如5和25是同构数。 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33。 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3 两个乒乓球队进行比赛,各出3人。甲队为A,B,C 3人,乙队为X,Y,Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程找出3对赛手的名单。 求数列1,1,1,3,5,9,17,31,。。。的前15个数,此数列的规律是从第4个数开始,每个数等于前3个数的和。 请编写程序,删除数组tt中所有值为x的元素,输出执行删除操作前、后的数组。要求:数组tt中共有10个元素,且通过初始化获得初值;删除数据x的值由用户键盘输入。 从键盘输入一个4*5的矩阵,输出该矩阵的转置矩阵。 编写一程序,将两个字符串连接起来,不要用strcat函数。 输出以下的杨辉三角形(要求输出10行) 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 。。。。。。。。。。。。。。。。 编程输出如下所示的上半三角矩阵。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 请编写程序,将5*5的二维整型数组w中两条对角线上的元素乘以整数m,输出原始数组

清华大学出版社 Java课后答案

第1章: 参考答案: 习题集: 一、填空题 1.多态 2.java.exe 3.jdb.exe 4.标准字节码 5.java 6.独立于平台 二、选择题 1.B 2.A 3.B 4.A 5.A 6.C 7.C 8.D 9.C 第2章: 参考答案: 实验指导: 2.5.1.第一处需要的代码:yourGuess>realNumber 第二处需要的代码:yourGuess=input.nextInt(); 第三处需要的代码:yourGuess

第四章课后习题参考答案

1 数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据 链路接通了”的区别何在? 答:(1)数据链路与链路的区别在于数据链路除链路外,还必须有一些必要的通信协议来控制数据的传输。因此,数据链路比链路多了实现通信协议所需要的硬件和软件。 (2)“电路接通了”表示链路两端的结点交换机已经开机,物理连接已经能够传送比特流了。但是,数据传输并不可靠。在物理连接基础上,再建立数据链路连接,才是“数据链路接通了”。此后,由于数据链路连接具有检测、确认和重传等功能,才使不太可靠的物理链路变成可靠的数据链路,进行可靠的数据传输。当数据链路断开连接时,物理电路连接不一定跟着断开连接。 2 数据链路层中的链路控制包括哪些功能? 答:数据链路层中的链路控制包括链路管理;帧同步;流量控制;差错控制;将数据和控制信息分开;透明传输;寻址等功能。 数据链路层做成可靠的链路层的优点和缺点取决于所应用的环境:对于干扰严重的信道,可靠的链路层可以将重传范围约束在局部链路,防止全网络的传输效率受损;对于优质信道,采用可靠的链路层会增大资源开销,影响传输效率。 3数据链路层的三个基本问题(帧定界,透明传输和差错检测)为什么都必须加以解决? 答:帧定界是分组交换的必然要求;透明传输是避免二进制比特流中出现与帧定界符号相同的模式,使节点错误识别帧;差错检测是为了避免接收到错误信息和防止信道中出现的无效数据帧浪费后续路由上的传输和处理资源。 4 如果在数据链路层不进行帧定界,会发生什么问题? 答:在数据传输过程中的传输网中的结点及接收方将无法区分分组(帧),也将不能确定分组的控制域和数据域,也不能实现差错控制。 5 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不能使数据链路层实现可靠传输? 答:1,PPP是面向字节的点对点通信协议,适用于线路质量不太差的情况,其主要特点:(1)协议简单,不使用序号和确认机制,也不需要流量控制;具有检错能力,但无纠错功能;只支持点到点的链路通信和和全双工链路(2)PPP规定特殊的字符为帧界定符,且在同步传输链路时,采用比特填充法,当用在异步传输时,使用字符填充法来保证数据传输的透明性; (3)PPP可同时支持链路所连接的LAN或ROUTER上运行的多种网络层协议;(4)可在多种点到点的链路上运行(串行,并行,高速,低速,电的,光的,交换的或非交换的),并可自动检测链路的工作状态,同时对不同的链路设置最大传输单元MTU(帧的有效载荷)的标准默认值;(5)提供了网络地址协议和数据压缩功能. 2,在TCP/IP协议簇中,可靠的传输由TCP协议负责,而PPP只进行检错,它是一个不可靠的传输协议,因此不需要帧的编号。 3,PPP适用于质量不太差的点对点全双工通信链路,且上层协议要保证数据传输的可靠性,如用户通过ISP连接Internet. 4,(1)PPP只提供了检错功能,当发现帧出现错误时,只是将其丢弃;(2)PPP帧没有使用序号,接收端不能通过序号确认帧的顺序和是否完全到达。 6 要发送的数据为1101011011。采用CRC的生成多项式是P(x)=x4+x+1 。试求应添加在数 据后面的余数。 数据在传输过程中最后一个1变成了0,问接收端能否发现? 若数据在传输过程中最后两个1都变成了0,问接收端能否发现? 答:添加的检验序列(冗余码)为1110 (11010110110000除以数P=10011)

相关主题