资源描述
.
Java基础教程第3版习题解答
第一章习题
1. James Gosling
2.
需3个步骤:
1) 用文本编辑器编写源文件
2) 使用javac编译源文件,得到字节码文件
3) 应用程序使用解释器运行。
3. path d:\jdk\bin
classpath =d:\jdk\jre\lib\rt.jar;.;
4. B
5. java 和 class
6.D。
第二章习题
1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。false不是标识符。
2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。不是关键字。class implements interface enum extends abstract。
3.float常量必须用F或f为后缀。double常量用D或d为后缀,但允许省略后缀。
4.一维数组名.length。二维数组名.length。
5. C
6.ADF
7. B
8 [代码2][代码3][代码4]
9.B。
10.属于操作题,解答略。
11.3,1
12.
public class E {
public static void main(String args[]) {
System.out.println((int)'你');
System.out.println((int)'我');
System.out.println((int)'他');
}
}
13.
public class E {
public static void main (String args[ ]) {
char cStart='α',cEnd='ω';
for(char c=cStart;c<=cEnd;c++)
System.out.print(" "+c);
}
}
第三章习题
1. 110
2.beep!!
3.
public class E {
public static void main (String args[ ]) {
for(char c='а'; c<='я';c++) {
System.out.print(" "+c);
}
}
}
4.
public class Xiti3_4
{ public static void main(String args[])
{ double sum=0,a=1;
int i=1;
while(i<=20)
{ sum=sum+a;
i++;
a=a*i;
}
System.out.println("sum="+sum);
}
}
5.
public class Xiti5
{ public static void main(String args[])
{ int i,j;
for(j=2;j<=100;j++)
{ for(i=2;i<=j/2;i++)
{ if(j%i==0)
break;
}
if(i>j/2)
{ System.out.print(" "+j);
}
}
}
}
6.
class Xiti6
{ public static void main(String args[])
{ double sum=0,a=1,i=1;
do { sum=sum+a;
i++;
a=(1.0/i)*a;
}
while(i<=20);
System.out.println("使用do-while循环计算的sum="+sum);
for(sum=0,i=1,a=1;i<=20;i++)
{ a=a*(1.0/i);
sum=sum+a;
}
System.out.println("使用for循环计算的sum="+sum);
}
}
7.
class Xiti7
{ public static void main(String args[])
{ int sum=0,i,j;
for(i=1;i<=1000;i++)
{ for(j=1,sum=0;j<i;j++)
{ if(i%j==0)
sum=sum+j;
}
if(sum==i)
System.out.println("完数:"+i);
}
}
}
8.
import java.util.*;
public class E {
public static void main (String args[ ]) {
int m,n;
Scanner scaner= new Scanner(System.in);
System.out.println("输入正数m回车确认");
m = scaner.nextInt();
System.out.println("输入正数n回车确认");
n = scaner.nextInt();
int p=m;
int q= n;
int r = m%n;
while(r!=0) {
m = n;
n =r;
r =m%n;
}
System.out.println(p+"和"+q+"的最大公约数"+n);
System.out.println(p+"和"+q+"的最小公倍数"+(p*q)/n);
}
}
9.
public class E
{ public static void main(String args[])
{ int n=1;
long sum=0;
while(true)
{ sum=sum+n;
n++;
if(sum>=8888)
break;
}
System.out.println("满足条件的最大整数:"+(n-1));
}
}
第四章习题
1. 用该类创建对象时。
2. 一个类中可以有多个方法具有一样的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同
3. 可以。不可以。
4. 不可以。
5. sum=-100。
6. 27
第五章习题
1.如果子类和父类不在同一个包中,那么,子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。
2.不可以。
3.abstract类。
4. 假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。\
5. D
6.15.0。8.0
7.98.0
12
第六章习题
1.接口中能声明变量吗?
不能
2.接口中能定义非抽象方法吗?
不能
3.什么叫接口的回调?
可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。
4.请说出E类中System.out.println的输出结果。
18
15
第7章习题
1.部类的外嵌类的成员变量在部类中仍然有效吗?
有效。
2.部类中的方法也可以调用外嵌类中的方法吗?
可以。
3.部类的类体中可以声明类变量和类方法吗?
不可以。
4.匿名类一定是部类吗?
一定是。
5.请说出下列程序的输出结果。
大家好,祝工作顺利!
6.请说出下列程序的输出结果。
p是接口变量
7.请说出下列程序的输出结果。
你好 fine thanks
第8章习题
1.不是。"\\hello"是。
2.4和3。
3.false和true。
4.负数。
5.是true。
6.3和-1。
7.会发生NumberFormatException异常。
8. 苹果
9 [代码1]:15。[代码2]:abc我们。
10.public class E {
public static void main (String args[ ]) {
String s1,s2,t1="ABCDabcd";
s1=t1.toUpperCase();
s2=t1.toLowerCase();
System.out.println(s1);
System.out.println(s2);
String s3=s1.concat(s2);
System.out.println(s3);
}
}
11.public class E {
public static void main (String args[ ]) {
String s="ABCDabcd";
char cStart=s.charAt(0);
char cEnd = s.charAt(s.length()-1);
System.out.println(cStart);
System.out.println(cEnd);
}
}
12.import java.util.*;
public class E {
public static void main (String args[ ]) {
int year1,month1,day1,year2,month2,day2;
try{ year1=Integer.parseInt(args[0]);
month1=Integer.parseInt(args[1]);
day1=Integer.parseInt(args[2]);
year2=Integer.parseInt(args[3]);
month2=Integer.parseInt(args[4]);
day2=Integer.parseInt(args[5]);
}
catch(NumberFormatException e)
{ year1=2012;
month1=0;
day1=1;
year2=2018;
month2=0;
day2=1;
}
Calendar calendar=Calendar.getInstance();
calendar.set(year1,month1-1,day1);
long timeYear1=calendar.getTimeInMillis();
calendar.set(year2,month2-1,day2);
long timeYear2=calendar.getTimeInMillis();
long 相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));
System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+
year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天");
}
}
13. import java.util.*;
public class E {
public static void main (String args[ ]) {
double a=0,b=0,c=0;
a=12;
b=24;
c=Math.asin(0.56);
System.out.println(c);
c=Math.cos(3.14);
System.out.println(c);
c=Math.exp(1);
System.out.println(c);
c=Math.log(8);
System.out.println(c);
}
}
14. import java.util.*;
public class E {
public static void main(String args[]) {
String cost = "数学87分,物理76分,英语96分";
Scanner scanner = new Scanner(cost);
scanner.useDelimiter("[^0123456789.]+");
double sum=0;
int count =0;
while(scanner.hasNext()){
try{ double score = scanner.nextDouble();
count++;
sum = sum+score;
System.out.println(score);
}
catch(InputMismatchException exp){
String t = scanner.next();
}
}
System.out.println("总分:"+sum+"分");
System.out.println("平均分:"+sum/count+"分");
}
}
第9章习题
1.使用FileInputStream。
2.FileInputStream按字节读取文件,FileReader按字符读取文件。
3.不可以。
4.使用对象流写入或读入对象时,要保证对象是序列化的。
5. import java.io.*;
public class E {
public static void main(String args[]) {
File f=new File("E.java");;
try{ RandomAccessFile random=new RandomAccessFile(f,"rw");
random.seek(0);
long m=random.length();
while(m>=0) {
m=m-1;
random.seek(m);
int c=random.readByte();
if(c<=255&&c>=0)
System.out.print((char)c);
else {
m=m-1;
random.seek(m);
byte cc[]=new byte[2];
random.readFully(cc);
System.out.print(new String(cc));
}
}
}
catch(Exception exp){}
}
}
6.
import java.io.*;
public class E {
public static void main(String args[ ]) {
File file=new File("E.java");
File tempFile=new File("temp.txt");
try{ FileReader inOne=new FileReader(file);
BufferedReader inTwo= new BufferedReader(inOne);
FileWriter tofile=new FileWriter(tempFile);
BufferedWriter out= new BufferedWriter(tofile);
String s=null;
int i=0;
s=inTwo.readLine();
while(s!=null) {
i++;
out.write(i+" "+s);
out.newLine();
s=inTwo.readLine();
}
inOne.close();
inTwo.close();
out.flush();
out.close();
tofile.close();
}
catch(IOException e){}
}
}
7 属于操作题,解答略
第10章习题
1.(1)添加数据源,(2)选择驱动程序,(3)命名数据源名称。
2.不必使用数据库名称。
3.事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。
4.
import java.sql.*;
import java.util.*;
public class E {
public static void main(String args[]) {
Query query=new Query();
String dataSource="myData";
String tableName="goods";
Scanner read=new Scanner(System.in);
System.out.print("输入数据源名:");
dataSource = read.nextLine();
System.out.print("输入表名:");
tableName = read.nextLine();
query.setDatasourceName(dataSource);
query.setTableName(tableName);
query.setSQL("SELECT * FROM "+tableName);
query.inputQueryResult();
}
}
class Query {
String datasourceName=""; //数据源名
String tableName=""; //表名
String SQL; //SQL语句
public Query() {
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {
System.out.print(e);
}
}
public void setDatasourceName(String s) {
datasourceName = s.trim();
}
public void setTableName(String s) {
tableName = s.trim();
}
public void setSQL(String SQL) {
this.SQL = SQL.trim();
}
public void inputQueryResult() {
Connection con;
Statement sql;
ResultSet rs;
try {
String uri = "jdbc:odbc:"+datasourceName;
String id = "";
String password = "";
con = DriverManager.getConnection(uri,id,password);
DatabaseMetaData metadata = con.getMetaData();
ResultSet rs1 = metadata.getColumns(null,null,tableName,null);
int 字段个数 = 0;
while(rs1.next()) {
字段个数++;
}
sql = con.createStatement();
rs = sql.executeQuery(SQL);
while(rs.next()) {
for(int k=1;k<=字段个数;k++) {
System.out.print(" "+rs.getString(k)+" ");
}
System.out.println("");
}
con.close();
}
catch(SQLException e) {
System.out.println("请输入正确的表名"+e);
}
}
}
5.
import java.sql.*;
import java.util.*;
public class E {
public static void main(String args[]) {
Query query = new Query();
String dataSource = "myData";
String tableName = "goods";
query.setDatasourceName(dataSource);
query.setTableName(tableName);
String name = "";
Scanner read=new Scanner(System.in);
System.out.print("商品名:");
name = read.nextLine();
String str="'%["+name+"]%'";
String SQL = "SELECT * FROM "+tableName+" WHERE name LIKE "+str;
query.setSQL(SQL);
System.out.println(tableName+"表中商品名是"+name+"的记录");
query.inputQueryResult();
}
}
class Query {
String datasourceName=""; //数据源名
String tableName=""; //表名
String SQL; //SQL语句
public Query() {
try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {
System.out.print(e);
}
}
public void setDatasourceName(String s) {
datasourceName = s.trim();
}
public void setTableName(String s) {
tableName = s.trim();
}
public void setSQL(String SQL) {
this.SQL = SQL.trim();
}
public void inputQueryResult() {
Connection con;
Statement sql;
ResultSet rs;
try {
String uri = "jdbc:odbc:"+datasourceName;
String id = "";
String password = "";
con = DriverManager.getConnection(uri,id,password);
DatabaseMetaData metadata = con.getMetaData();
ResultSet rs1 = metadata.getColumns(null,null,tableName,null);
int 字段个数 = 0;
while(rs1.next()) {
字段个数++;
}
sql = con.createStatement();
rs = sql.executeQuery(SQL);
while(rs.next()) {
for(int k=1;k<=字段个数;k++) {
System.out.print(" "+rs.getString(k)+" ");
}
System.out.println("");
}
con.close();
}
catch(SQLException e) {
System.out.println("请输入正确的表名"+e);
}
}
}
第11章习题
1.Frame容器的默认布局是BorderLayout布局,Panel容器的默认布局是FlowLayout布局。
2.不可以
3. import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
import java.awt.event.*;
public class E {
public static void main(String args[]) {
Computer fr=new Computer();
}
}
class Computer extends JFrame implements DocumentListener {
JTextArea text1,text2;
int count=1;
double sum=0,aver=0;
Computer() {
setLayout(new FlowLayout());
text1=new JTextArea(6,20);
text2=new JTextArea(6,20);
add(new JScrollPane(text1));
add(new JScrollPane(text2));
text2.setEditable(false);
(text1.getDocument()).addDocumentListener(this);
setSize(300,320);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void changedUpdate(DocumentEvent e) {
String s=text1.getText();
String []a =s.split("[^0123456789.]+");
sum=0;
aver=0;
for(int i=0;i<a.length;i++) {
try { sum=sum+Double.parseDouble(a[i]);
}
catch(Exception ee) {}
}
aver=sum/count;
text2.setText(null);
text2.append("\n和:"+sum);
text2.append("\n平均值:"+aver);
}
public void removeUpdate(DocumentEvent e){
changedUpdate(e);
}
public void insertUpdate(DocumentEvent e){
changedUpdate(e);
}
}
4. import java.awt.*;
import javax.swing.event.*;
import javax.swing.*;
import java.awt.event.*;
public class E {
public static void main(String args[]) {
ComputerFrame fr=new ComputerFrame();
}
}
class ComputerFrame extends JFrame implements ActionListener {
JTextField text1,text2,text3;
utton buttonAdd,buttonSub,buttonMul,buttonDiv;
JLabel label;
public ComputerFrame() {
setLayout(new FlowLayout());
text1=new JTextField(10);
text2=new JTextField(10);
text3=new JTextField(10);
label=new JLabel(" ",JLabel.CENTER);
label.setBackground(Color.green);
add(text1);
add(label);
add(text2);
add(text3);
buttonAdd=new utton("加");
buttonSub=new utton("减");
buttonMul=new utton("乘");
buttonDiv=new utton
展开阅读全文