精华内容
下载资源
问答
  • java第五版课后答案

    2011-05-31 19:50:52
    java第五版课后答案 大部分的代码都有,很详细,很给力的! 大部分的代码都有,很详细,很给力的! 大部分的代码都有,很详细,很给力的!
  • 疯狂Java讲义 第五课后习题 代码,一共有五道,包括编写学生类、定义Student类、定义普通人老师班主任学生学校并生成API文档、利用组合来实现类复用、定义交通工具汽车火车飞机这些类
  • Java2实用教程2(第五版)耿祥义课后习题参考答案

    万次阅读 多人点赞 2018-11-12 20:27:57
    Java2(第5)最新答案 耿祥义 1章 一、问答 1.James Gosling 2.需3个步骤: 用文本编辑器编写源文件。  使用javac编译源文件,得到字节码文件。 使用解释器运行程序。 3.由类所构成,应用程序必须有...

    Java2(第5版)最新答案 耿祥义

    第1章

    一、问答题

    1James Gosling

    2.需3个步骤:

    1. 用文本编辑器编写源文件。 
    2. 使用javac编译源文件,得到字节码文件。
    3. 使用解释器运行程序。

    3由类所构成,应用程序必须有一个类含有public static void main(String args[])方法,含有该方法的类称为应用程序的主类。不一定,但最多有一个public类。

    4.set classpath=D:\jdk\jre\lib\rt.jar;.;

    5.  java和class

    6.  java Bird  

    7. 独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)

    二、选择题

    1.B。2.D。

    三、阅读程序

    1.(a)Person.java。(b)两个字节码,分别是Person.class和Xiti.class。(c)得到“NoSuchMethodError”,得到“NoClassDefFoundError: Xiti/class”,得到“您好,很高兴认识您 nice to meet you”

    第2章

    一、问答题

    1用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。false不是标识符。

    2关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。不是关键字。class implements interface enum extends abstract。

    3boolean,char,byte,short,int,long,float,double。

    4.float常量必须用F或f为后缀。double常量用D或d为后缀,但允许省略后缀。

    5.一维数组名.length。二维数组名.length。

    二、选择题

    1.C。2.ADF。3.B。4.BE。5.【代码2】【代码3】【代码4】【代码5】。6.B。

    三、阅读或调试程序

    1.属于操作题,解答略。

    2.属于操作题,解答略。

    3.属于操作题,解答略。

    4.【代码1】:4。【代码2】:b[0]=1。

    5.【代码1】:40。【代码2】:7

    四、编写程序

    1.  public class E {

       public static void main(String args[]) {

         System.out.println((int)'你');

         System.out.println((int)'我');  

         System.out.println((int)'他');

       }

    }

    2.   public class E {

       public static void main (String args[ ]) {

          char cStart='α',cEnd='ω';

          for(char c=cStart;c<=cEnd;c++)

            System.out.print(" "+c);

       }

    }

    第3章

    一、问答题

    1boolean

    2.不可以

    3boolean

    4. 不是必须的

    5结束while语句的执行

    6可以

    二、选择题

    1.A。 2.C。 3.C

    三、阅读程序

    1你,苹,甜

    2.Jeep好好

    3x=-5,y=-1

    四、编程序题

    1public class Xiti1 {

      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);

       }

    }

    2public class Xiti2 {

      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);

              }

          }

       }

    }

    3class Xiti3 {

      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);

       }

    }

    4public class Xiti4 {

      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);

         }

      }

    }

    5public class Xiti5 {

      public static void main(String args[]) {

         int m=8,item=m,i=1;

         long sum=0;

         for(i=1,sum=0,item=m;i<=10;i++) {

            sum=sum+item;

            item=item*10+m;

         }

         System.out.println(sum);

      }

    }

    6 public class Xiti6 {

      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));

       }

    }

    习题四(第4章)

    一、问答题

    1. 封装、继承和多态。

    2.当类名由几个单词复合而成时,每个单词的首字母使用大写。

    3名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第2个单词开始的其它单词的首字母使用大写。

    4属性

    5行为

    6用类创建对象时。没有类型

    7用类创建对象时。

    8一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。可以。

    9可以不可以。

    10.不可以。

    11.一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。

    12.代表调用当前方法的对象。不可以。

    二、选择题

    1.B。2.D。3.D。4.D。5.CD。6.【代码1】【代码4】。7.【代码4】。

    三、阅读程序

    1.【代码1】:1,【代码2】:121,【代码3】:121。

    2.sum=-100。

    3. 27。

    4.【代码1】:100,【代码2】:20.0。

    5. 上机实习题目,解答略。

    6. 上机实习题目,解答略。

    四、编程题

    CPU.java

    public class CPU {

       int speed; 

       int getSpeed() {

          return speed;

       }

       public void setSpeed(int speed) {

          this.speed = speed;

       }

    }

    HardDisk.java

    public class HardDisk {

       int amount; 

       int getAmount() {

          return amount;

       }

       public void setAmount(int amount) {

          this.amount = amount;

       }

    }

    PC.java

    public class PC {

        CPU cpu;

        HardDisk HD;

        void setCPU(CPU cpu) {

            this.cpu = cpu;

        }

         void setHardDisk(HardDisk HD) {

            this.HD = HD;

        }

        void show(){

           System.out.println("CPU速度:"+cpu.getSpeed());

           System.out.println("硬盘容量:"+HD.getAmount());

        }

    }

    Test.java

    public class Test {

       public static void main(String args[]) {

           CPU cpu = new CPU();

           HardDisk HD=new HardDisk();

           cpu.setSpeed(2200);

           HD.setAmount(200);

           PC pc =new PC();

           pc.setCPU(cpu);

           pc.setHardDisk(HD);

           pc.show();

        }

    }

    习题五(第5章)

    一、问答题

    1.不可以。

    2.是。

    3.不继承。

    4.声明与父类同名的成员变量。

    5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重写的方法的名字、参数个数、参数的类型和父类的方法完全相同。重写方法的目的是隐藏继承的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。

    6.不可以。

    7.Abstract类。

    8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。

    9.通过重写方法。

    10.面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地交给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。

    二、选择题

    1C。2D。3CD。4D。5B。6B。7D。8B。9A。

    三、阅读程序

    1.【代码1】:15.0。【代码2】:8.0。

    2.【代码1】:11。【代码2】:11。

    3.【代码1】:98.0。【代码2】:12。代码3】:98.0。【代码4】:9。

    4.【代码1】:120。【代码2】:120。代码3】:-100。

    四、编程题

    Animal.java

    public abstract class Animal {

        public abstract void cry();

        public abstract String getAnimalName();

    }

    Simulator.java

    public class Simulator {

       public void playSound(Animal animal) {

           System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");

           animal.cry();

       }

    }

    Dog.java

    public class Dog extends Animal {

       public void cry() {

          System.out.println("汪汪...汪汪");

       } 

       public String getAnimalName() {

          return "狗";

       }

    }

    Cat.java

    public class Cat extends Animal {

       public void cry() {

          System.out.println("喵喵...喵喵");

       } 

       public String getAnimalName() {

          return "猫";

       }

    }

    Application.java

    public class Example5_13 {

       public static void main(String args[]) {

          Simulator simulator = new Simulator();

          simulator.playSound(new Dog());

          simulator.playSound(new Cat());

       }

    }

    习题六(第6章)

    一、问答题

    1.不能。

    2.不能。

    3.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。

    4.不可以。

    5.可以。

    二、选择题

    1D。2AB。3B。

    三、阅读程序

    1.【代码1】:15.0。【代码2】:8。

    2.【代码1】:18。【代码2】:15。

    四、编程题

    Animal.java

    public interface Animal {

        public abstract void cry();

        public abstract String getAnimalName();

    }

    Simulator.java

    public class Simulator {

       public void playSound(Animal animal) {

           System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");

           animal.cry();

       }

    }

    Dog.java

    public class Dog implements Animal {

       public void cry() {

          System.out.println("汪汪...汪汪");

       } 

       public String getAnimalName() {

          return "狗";

       }

    }

    Cat.java

    public class Cat implements Animal {

       public void cry() {

          System.out.println("喵喵...喵喵");

       }  

       public String getAnimalName() {

          return "猫";

       }

    }

    Application.java

    public class Example5_13 {

       public static void main(String args[]) {

          Simulator simulator = new Simulator();

          simulator.playSound(new Dog());

          simulator.playSound(new Cat());

       }

    }

    习题七(第7章)

    一、问答题

    1.有效。

    2.可以。

    3.不可以。

    4.一定是。

    二、选择题

    1C。2C。

    三、阅读程序

    1大家好,祝工作顺利!

    2p是接口变量。

    3你好 fine thanks。

    4属于上机实习程序,解答略。

    四、编程题

    import java.util.*;

    public class E {

        public static void main (String args[ ]){

          Scanner reader = new Scanner(System.in);

          double sum = 0;

           int m = 0;

           while(reader.hasNextDouble()){

               double x = reader.nextDouble();

               assert x< 100:"数据不合理";

               m = m+1;

               sum = sum+x;

           }

           System.out.printf("%d个数的和为%f\n",m,sum);

           System.out.printf("%d个数的平均值是%f\n",m,sum/m);

        }

    }

    习题八(第8章)

    一、问答题

    1.不是。"\\hello"是。

    2.4和3。

    3.false和true。

    4.负数。

    5.是true。

    6.3和-1。

    7.会发生NumberFormatException异常。

    二、选择题

    1A。2C。3B。4D。5C。

    三、阅读程序

    1.【代码】:苹果。

    2.【代码】:Love:Game。

    3.【代码1】:15。代码2】:abc我们。

    4.【代码】:13579。

    5.【代码】:9javaHello。

    6属于上机实习程序,解答略。

    7属于上机实习程序,解答略。

     

    四、编程题

    1.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);

       }

    }

    2.   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);

       }

    }

    3.   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+"日相隔"+相隔天数+"天");

       }

    }

    4.   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);

       }

    }

    5.public class E {

          public static void main (String args[ ]) {

            String str = "ab123you你是谁?";

            String regex = "\\D+";

            str = str.replaceAll(regex,"");

            System.out.println(str);

          }

    }

    6. 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.Frame容器的默认布局是BorderLayout布局。

    2.不可以。

    3.ActionEvent。

    4.DocumentEvent。

    5.5个。

    6.MouseMotionListener。

    二、选择题

    1C。2A。3A。4D。5C。

    三、编程题

    1. 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);

       }

    }

    2.   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;

      JButton 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 JButton("加");   

       buttonSub=new JButton("减");

       buttonMul=new JButton("乘");

       buttonDiv=new JButton("除");

       add(buttonAdd);

       add(buttonSub);

       add(buttonMul);

       add(buttonDiv);

       buttonAdd.addActionListener(this);

       buttonSub.addActionListener(this);

       buttonMul.addActionListener(this); 

       buttonDiv.addActionListener(this);

       setSize(300,320);

       setVisible(true);

       validate();

       setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }  

      public void actionPerformed(ActionEvent e) {

        double n;

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

           double n1,n2; 

           try{ n1=Double.parseDouble(text1.getText());

                n2=Double.parseDouble(text2.getText());

                n=n1+n2;

                text3.setText(String.valueOf(n));

                label.setText("+");

              }

           catch(NumberFormatException ee)

              { text3.setText("请输入数字字符");

              }

         }

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

           double n1,n2; 

           try{  n1=Double.parseDouble(text1.getText());

                n2=Double.parseDouble(text2.getText());

                n=n1-n2;

                text3.setText(String.valueOf(n));

                label.setText("-");

              }

           catch(NumberFormatException ee)

              { text3.setText("请输入数字字符");

              }

         }

         else if(e.getSource()==buttonMul)

          {double n1,n2; 

           try{ n1=Double.parseDouble(text1.getText());

                n2=Double.parseDouble(text2.getText());

                n=n1*n2;

                text3.setText(String.valueOf(n));

                label.setText("*");

              }

           catch(NumberFormatException ee)

              { text3.setText("请输入数字字符");

              }

          }

          else if(e.getSource()==buttonDiv)

          {double n1,n2; 

           try{ n1=Double.parseDouble(text1.getText());

                n2=Double.parseDouble(text2.getText());

                n=n1/n2;

                text3.setText(String.valueOf(n));

                label.setText("/");

              }

           catch(NumberFormatException ee)

              { text3.setText("请输入数字字符");

              }

          }

         validate();

      }

    }

    3.   import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class E {

       public static void main(String args[]){

          Window win = new Window();

          win.setTitle("使用MVC结构");

          win.setBounds(100,100,420,260);

       }

    }

    class Window extends JFrame implements ActionListener {

       Lader lader;             //模型

       JTextField textAbove,textBottom,textHeight;   //视图

       JTextArea showArea;         //视图

       JButton controlButton;        //控制器

       Window() {

          init();

          setVisible(true);

          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       }

       void init() {

         lader = new Lader();

         textAbove = new JTextField(5);  

         textBottom = new JTextField(5);

         textHeight = new JTextField(5);

         showArea = new JTextArea();   

         controlButton=new JButton("计算面积");

         JPanel pNorth=new JPanel();

         pNorth.add(new JLabel("上底:"));

         pNorth.add(textAbove);

         pNorth.add(new JLabel("下底:"));

         pNorth.add(textBottom);

         pNorth.add(new JLabel("高:"));

         pNorth.add(textHeight);

         pNorth.add(controlButton);

         controlButton.addActionListener(this);

         add(pNorth,BorderLayout.NORTH);

         add(new JScrollPane(showArea),BorderLayout.CENTER);

       }

       public void actionPerformed(ActionEvent e) {

         try{ 

            double above = Double.parseDouble(textAbove.getText().trim());

            double bottom = Double.parseDouble(textBottom.getText().trim());

            double height = Double.parseDouble(textHeight.getText().trim());

            lader.setAbove(above) ;         

            lader.setBottom(bottom);

            lader.setHeight(height);

            double area = lader.getArea();    

            showArea.append("面积:"+area+"\n");

         }

         catch(Exception ex) {

            showArea.append("\n"+ex+"\n");

         }

       }

    }

    class Lader {

        double above,bottom,height;

        public double getArea() {

           double area = (above+bottom)*height/2.0;

           return area;

        }

        public void setAbove(double a) {

          above = a;

        }

       public void setBottom(double b) {

          bottom = b;

       }

       public void setHeight(double c) {

         height = c;

       }

    }

    习题十(第10章)

    一、问答题

    1.使用FileInputStream。

    2.FileInputStream按字节读取文件,FileReader按字符读取文件。

    3.不可以。

    4.使用对象流写入或读入对象时,要保证对象是序列化的。

    5.使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流,那么用对象输入流读回的对象一定是原对象的一个克隆。

    二、选择题

    1C。2B。

    三、阅读程序

    1.【代码1】:51。【代码2】:0。

    2.【代码1】:3。【代码2】:abc。代码3】:1。【代码4】:dbc。

    3上机实习题,解答略。

    四、编程题

    1. 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){}

        }

    }

    2.   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){}

       }

    }

    3.   import java.io.*;

    import java.util.*;

    public class E {

       public static void main(String args[]) {

          File file = new File("a.txt");

          Scanner sc = null;

          double sum=0;

          int count = 0;

          try { sc = new Scanner(file);

                sc.useDelimiter("[^0123456789.]+");

                while(sc.hasNext()){

                   try{  double price = sc.nextDouble();

                        count++;

                        sum = sum+price;

                        System.out.println(price);

                   }

                   catch(InputMismatchException exp){

                        String t = sc.next();

                   }  

                }

                System.out.println("平均价格:"+sum/count);

          }

          catch(Exception exp){

             System.out.println(exp);

          }

       }

    }

    习题十一(第11章)

    一、问答题

    1.(1)添加数据源,(2)选择驱动程序,(3)命名数据源名称。

    2.不必使用数据名称。

    3.减轻数据库内部SQL语句解释器的负担。

    4.事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。

    5.(1)用setAutoCommit()方法关闭自动提交模式,(2)用commit()方法处理事务,(3)用rollback()方法处理事务失败。

    四、编程题

    1.  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);

           }

       }   

    }

    2.   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);

           }

       }   

    }

    3.将例子5中的代码:

    String SQL = "SELECT * FROM "+tableName+" ORDER BY name";

    更改为:

    String SQL = "SELECT * FROM "+tableName+" ORDER BY madeTime";

    可达题目要求。

    习题十二(第12章)

    一、问答题

    14种状态:新建、运行、中断和死亡。

    2有4种原因的中断:(1)JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。(2)线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状态。(3)线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态。(4)线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。

    3死亡状态,不能再调用start()方法。

    4.新建和死亡状态。

    5.两种方法:用Thread类或其子类。

    6.使用 setPrority(int grade)方法。

    7.Java使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理,否则可能发生混乱。

    8当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。

    9.不合理。

    10.“吵醒”休眠的线程。一个占有CPU资源的线程可以让休眠的线程调用interrupt 方法“吵醒”自己,即导致休眠的线程发生InterruptedException异常,从而结束休眠,重新排队等待CPU资源。

    二、选择题

    1.A。2.A。3.B。

    三、阅读程序

    1.属于上机调试题目,解答略。

    2.属于上机调试题目,解答略。

    3.属于上机调试题目,解答略。

    4.属于上机调试题目,解答略。

    5.属于上机调试题目,解答略。

    6.属于上机调试题目,解答略

    7.【代码】:BA。

    8.属于上机调试题目,解答略

    四、编写程序

    1.  public class E {

     public static void main(String args[]) {

           Cinema a=new Cinema();

            a.zhang.start();

            a.sun.start();

            a.zhao.start();

       }

    }

    class TicketSeller    //负责卖票的类。

    {  int fiveNumber=3,tenNumber=0,twentyNumber=0;

       public synchronized void  sellTicket(int receiveMoney)

       {  if(receiveMoney==5)

           {  fiveNumber=fiveNumber+1;

              System.out.println(Thread.currentThread().getName()+

    "给我5元钱,这是您的1张入场卷");

           }

           else if(receiveMoney==10)          

            { while(fiveNumber<1)

                {   try {  System.out.println(Thread.currentThread().getName()+"靠边等");

                           wait();  

                           System.out.println(Thread.currentThread().getName()+"结束等待");

                        }

                   catch(InterruptedException e) {}

                }

               fiveNumber=fiveNumber-1;

               tenNumber=tenNumber+1;

               System.out.println(Thread.currentThread().getName()+

    "给我10元钱,找您5元,这是您的1张入场卷"); 

            }

           else if(receiveMoney==20)          

            {  while(fiveNumber<1||tenNumber<1)

                {   try {  System.out.println(Thread.currentThread().getName()+"靠边等");

                           wait();  

                           System.out.println(Thread.currentThread().getName()+"结束等待");

                        }

                   catch(InterruptedException e) {}

                }

               fiveNumber=fiveNumber-1;

               tenNumber=tenNumber-1;

               twentyNumber=twentyNumber+1;  

               System.out.println(Thread.currentThread().getName()+

    "给20元钱,找您一张5元和一张10元,这是您的1张入场卷");

                                

            }

           notifyAll();

       }

    }

    class Cinema implements Runnable         

    {  Thread zhang,sun,zhao;

       TicketSeller seller;

       Cinema()

       {  zhang=new Thread(this);

          sun=new Thread(this);

          zhao=new Thread(this);

          zhang.setName("张小有");

          sun.setName("孙大名");

          zhao.setName("赵中堂");

          seller=new TicketSeller();

       }

       public void run()

       {  if(Thread.currentThread()==zhang)

           {  seller.sellTicket(20);

           }

           else if(Thread.currentThread()==sun)

           {  seller.sellTicket(10);

           }

           else if(Thread.currentThread()==zhao)

           { seller.sellTicket(5);

           }

       }

    }

    2.  参照本章例子6

    3.参照本章例子9

    习题十三(第13章)

    一、问答题

    1.一个URL对象通常包含最基本的三部分信息:协议、地址、资源。

    2.URL对象调用InputStream openStream() 方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。

    3.客户端的套接字和服务器端的套接字通过输入、输出流互相连接后进行通信。

    4.使用方法accept(),accept()会返回一个和客户端Socket对象相连接的Socket对象。accept方法会堵塞线程的继续执行,直到接收到客户的呼叫。。

    5.域名/IP。

    四、编程题

    1.  (1)客户端

    import java.net.*;

    import java.io.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class Client

    {  public static void main(String args[])

       {  new ComputerClient();

       }

    }

    class ComputerClient extends Frame implements Runnable,ActionListener

    {  Button connection,send;

       TextField inputText,showResult;

       Socket socket=null;

       DataInputStream in=null;

       DataOutputStream out=null;

       Thread thread;

       ComputerClient()

       {  socket=new Socket();

          setLayout(new FlowLayout());

          Box box=Box.createVerticalBox();

          connection=new Button("连接服务器");

          send=new Button("发送");

          send.setEnabled(false);

          inputText=new TextField(12);

          showResult=new TextField(12);

          box.add(connection);

          box.add(new Label("输入三角形三边的长度,用逗号或空格分隔:"));

          box.add(inputText);

          box.add(send);

          box.add(new Label("收到的结果:"));

          box.add(showResult);

          connection.addActionListener(this);

          send.addActionListener(this);

          thread=new Thread(this);

          add(box);

          setBounds(10,30,300,400);

          setVisible(true);

          validate();

          addWindowListener(new WindowAdapter()

                       {  public void windowClosing(WindowEvent e)

                                {  System.exit(0);

                                }

                       });

       }

       public void actionPerformed(ActionEvent e)

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

          {  try  //请求和服务器建立套接字连接:

             { if(socket.isConnected())

                  {}

               else

                  { InetAddress  address=InetAddress.getByName("127.0.0.1");

                    InetSocketAddress socketAddress=new InetSocketAddress(address,4331);

                    socket.connect(socketAddress);

                    in =new DataInputStream(socket.getInputStream());

                    out = new DataOutputStream(socket.getOutputStream());

                    send.setEnabled(true);

                    thread.start();

                   }

             }

             catch (IOException ee){}

          }

         if(e.getSource()==send)

          {  String s=inputText.getText();

             if(s!=null)

               {  try { out.writeUTF(s);

                      }

                  catch(IOException e1){}

               }              

          }

       }

       public void run()

       {  String s=null;

          while(true)

           {    try{  s=in.readUTF();

                      showResult.setText(s);

                   }

               catch(IOException e)

                   {  showResult.setText("与服务器已断开");

                          break;

                   }  

           }

      }

    }

    2)服务器端

    import java.io.*;

    import java.net.*;

    import java.util.*;

    public class Server

    {  public static void main(String args[])

       {  ServerSocket server=null;

          Server_thread thread;

          Socket you=null;

          while(true)

           {  try{  server=new ServerSocket(4331);

                 }

              catch(IOException e1)

                    {  System.out.println("正在监听"); //ServerSocket对象不能重复创建

               }

              try{  System.out.println(" 等待客户呼叫");

                    you=server.accept();

                    System.out.println("客户的地址:"+you.getInetAddress());

                 }

             catch (IOException e)

                 {  System.out.println("正在等待客户");

                 }

             if(you!=null)

                 {  new Server_thread(you).start(); //为每个客户启动一个专门的线程 

              }

           }

       }

    }

    class Server_thread extends Thread

    {  Socket socket;

       DataOutputStream out=null;

       DataInputStream  in=null;

       String s=null;

       boolean quesion=false;

       Server_thread(Socket t)

       {  socket=t;

          try {  out=new DataOutputStream(socket.getOutputStream());

                 in=new DataInputStream(socket.getInputStream());

              }

          catch (IOException e)

              {}

       } 

       public void run()       

       {  while(true)

          {  double a[]=new double[3] ;

             int i=0;

             try{  s=in.readUTF();//堵塞状态,除非读取到信息

                   quesion=false;

                   StringTokenizer fenxi=new StringTokenizer(s," ,");

                     while(fenxi.hasMoreTokens())

                       {  String temp=fenxi.nextToken();

                          try{  a[i]=Double.valueOf(temp).doubleValue();i++;

                             }

                          catch(NumberFormatException e)

                             {  out.writeUTF("请输入数字字符");

                                quesion=true;

                             }

                       }

                    if(quesion==false)

                    {  double p=(a[0]+a[1]+a[2])/2.0;

                       out.writeUTF(" "+Math.sqrt(p*(p-a[0])*(p-a[1])*(p-a[2])));

                    }

                }

             catch (IOException e)

                {  System.out.println("客户离开");

                   return;

                }

          }

       }

    }

    2.   客户端Client.java

    import java.net.*;

    import java.io.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    public class Client

    {  public static void main(String args[])

       {  new ChatClient();

       }

    }

    class ChatClient extends Frame implements Runnable,ActionListener

    {  Button connection,send;

       TextField inputName,inputContent;

       TextArea chatResult;

       Socket socket=null;

       DataInputStream in=null;

       DataOutputStream out=null;

       Thread thread;

       String name="";

       public ChatClient ()

       {  socket=new Socket();

          Box box1=Box.createHorizontalBox();

          connection=new Button("连接服务器");

          send=new Button("发送");

          send.setEnabled(false);

          inputName=new TextField(6);

          inputContent=new TextField(22);

          chatResult=new TextArea();

          box1.add(new Label("输入妮称:"));

          box1.add(inputName);

          box1.add(connection);

          Box box2=Box.createHorizontalBox();

          box2.add(new Label("输入聊天内容:"));

          box2.add(inputContent);

          box2.add(send);

          connection.addActionListener(this);

          send.addActionListener(this);

          thread=new Thread(this);

          add(box1,BorderLayout.NORTH);

          add(box2,BorderLayout.SOUTH);

          add(chatResult,BorderLayout.CENTER);

          setBounds(10,30,400,280);

          setVisible(true);

          validate();

          addWindowListener(new WindowAdapter()

                       {  public void windowClosing(WindowEvent e)

                                {  System.exit(0);

                                }

                       });

       }

       public void actionPerformed(ActionEvent e)

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

          {  try 

             { if(socket.isConnected())

                  {}

               else

                  { InetAddress  address=InetAddress.getByName("127.0.0.1");

                    InetSocketAddress socketAddress=new InetSocketAddress(address,666);

                    socket.connect(socketAddress);

                    in =new DataInputStream(socket.getInputStream());

                    out = new DataOutputStream(socket.getOutputStream());

                    name=inputName.getText();

                    out.writeUTF("姓名:"+name);

                    send.setEnabled(true);

                    if(!(thread.isAlive()))

                       thread=new Thread(this);

                    thread.start();

                   }

             }

             catch (IOException ee){}

          }

         if(e.getSource()==send)

          {  String s=inputContent.getText();

             if(s!=null)

               {  try { out.writeUTF("聊天内容:"+name+":"+s);

                      }

                  catch(IOException e1){}

               }              

          }

       }

       public void run()

       {  String s=null;

          while(true)

           {    try{  s=in.readUTF();

                      chatResult.append("\n"+s);

                   }

               catch(IOException e)

                   {  chatResult.setText("与服务器已断开");

                      try { socket.close();

                          }

                      catch(Exception exp) {}

                      break;

                   }  

           }

      }

    }

    服务器端ChatServer.java

    import java.io.*;

    import java.net.*;

    import java.util.*;

    public class ChatServer

    {  public static void main(String args[])

        { ServerSocket server=null;

          Socket you=null;

          Hashtable peopleList;      

          peopleList=new Hashtable();

          while(true)

                { try  {  server=new ServerSocket(666);

                      }

                 catch(IOException e1)

                      {  System.out.println("正在监听");

                      }

                 try  {  you=server.accept();                

                         InetAddress address=you.getInetAddress();

                         System.out.println("客户的IP:"+address);

                      }

                 catch (IOException e) {}

                 if(you!=null)

                      {  Server_thread peopleThread=new Server_thread(you,peopleList);

                         peopleThread.start();              

                      }

                 else {  continue;

                      }

               }

      }

    }

    class Server_thread extends Thread

    {  String name=null;     

       Socket socket=null;

       File file=null;

       DataOutputStream out=null;

       DataInputStream  in=null;

       Hashtable peopleList=null;

       Server_thread(Socket t,Hashtable list)

           { peopleList=list;

             socket=t;

             try {  in=new DataInputStream(socket.getInputStream());

                    out=new DataOutputStream(socket.getOutputStream());

                 }

             catch (IOException e) {}

            } 

      public void run()       

      {   while(true)

          { String s=null;  

            try{

                s=in.readUTF();                      

                if(s.startsWith("姓名:"))            

                  { name=s;

                    boolean boo=peopleList.containsKey(name);

                    if(boo==false)

                      { peopleList.put(name,this);         

                      }

                    else

                      { out.writeUTF("请换妮称:");

                        socket.close();

                        break;

                      }

                  }

                else if(s.startsWith("聊天内容"))

                  {  String message=s.substring(s.indexOf(":")+1);

                     Enumeration chatPersonList=peopleList.elements();   

                     while(chatPersonList.hasMoreElements())

                     {     ((Server_thread)chatPersonList.nextElement()).out.writeUTF("聊天内容:"+

    message);

                     } 

                  }

               }

            catch(IOException ee)  

               {     Enumeration chatPersonList=peopleList.elements();   

                     while(chatPersonList.hasMoreElements())            

                       { try

                         {  Server_thread  th=(Server_thread)chatPersonList.nextElement();

                            if(th!=this&&th.isAlive())

                             { th.out.writeUTF("客户离线:"+name);

                             }

                         }

                         catch(IOException eee){}

                       }

                     peopleList.remove(name);

                     try { socket.close();

                        }                   

                     catch(IOException eee){}

                     System.out.println(name+"客户离开了");

                     break;     

               }            

         }

      }

    }

    3.BroadCastWord.java

    import java.io.*;

    import java.net.*;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.Timer;

    public class BroadCastWord extends Frame implements ActionListener

    {  int port;

       InetAddress group=null;

       MulticastSocket socket=null;

       Timer time=null;

       FileDialog open=null;

       Button select,开始广播,停止广播;

       File file=null;

       String FileDir=null,fileName=null;

       FileReader in=null;

       BufferedReader bufferIn=null;

       int token=0;

       TextArea 显示正在播放内容,显示已播放的内容;

      public BroadCastWord()

      { super("单词广播系统");

       select=new Button("选择要广播的文件");

       开始广播=new Button("开始广播");

       停止广播=new Button("停止广播");

       select.addActionListener(this);

       开始广播.addActionListener(this);

       停止广播.addActionListener(this);

       time=new Timer(2000,this);

       open=new FileDialog(this,"选择要广播的文件",FileDialog.LOAD); 

       显示正在播放内容=new TextArea(10,10);

       显示正在播放内容.setForeground(Color.blue);

       显示已播放的内容=new TextArea(10,10);

       Panel north=new Panel();

       north.add(select);

       north.add(开始广播);

       north.add(停止广播);

       add(north,BorderLayout.NORTH);

       Panel center=new Panel();

       center.setLayout(new GridLayout(1,2));

       center.add(显示正在播放内容);

       center.add(显示已播放的内容);

       add(center,BorderLayout.CENTER);

       validate();

       try

          { port=5000;                                  

           group=InetAddress.getByName("239.255.0.0"); 

           socket=new MulticastSocket(port);           

           socket.setTimeToLive(1);                    

           socket.joinGroup(group);                    

          }

      catch(Exception e)

           { System.out.println("Error: "+ e);         

           }

      setBounds(100,50,360,380);  

      setVisible(true);

      addWindowListener(new WindowAdapter()

                         { public void windowClosing(WindowEvent e)

                           { System.exit(0);

                               }

                             });

     }

     public void actionPerformed(ActionEvent e)

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

         {显示已播放的内容.setText(null);

          open.setVisible(true);

          fileName=open.getFile();

          FileDir=open.getDirectory();

          if(fileName!=null)

           { time.stop();      

             file=new File(FileDir,fileName);

             try

                {  file=new File(FileDir,fileName);

                   in=new FileReader(file);                     

                   bufferIn=new BufferedReader(in);

                }

             catch(IOException ee) { }

           }

         }

       else if(e.getSource()==开始广播)

         {  time.start();

         }

       else if(e.getSource()==time)

         {  String s=null;

            try  {  if(token==-1)

                     { file=new File(FileDir,fileName);

                       in=new FileReader(file);                      

                       bufferIn=new BufferedReader(in);

                     }

                  s=bufferIn.readLine();

                  if(s!=null)

                    { token=0;

                      显示正在播放内容.setText("正在广播的内容:\n"+s);

                      显示已播放的内容.append(s+"\n");

                      DatagramPacket packet=null;    

                      byte data[]=s.getBytes();

                      packet=new DatagramPacket(data,data.length,group,port);

                      socket.send(packet);    

                    }

                  else

                    {  token=-1;

                    }

                }

            catch(IOException ee) { }

         }

       else if(e.getSource()==停止广播)

         {  time.stop();

         }

     }

    public static void main(String[] args)

       {  BroadCastWord broad=new BroadCastWord();

       }

    }

    Receive.java

    import java.net.*;

    import java.awt.*;

    import java.awt.event.*;

    public class Receive extends Frame implements Runnable,ActionListener

    {  int port;                                       

      InetAddress group=null;                          

      MulticastSocket socket=null;                    

      Button 开始接收,停止接收;  

      TextArea 显示正在接收内容,显示已接收的内容; 

      Thread thread;                                  

      boolean 停止=false;

      public Receive()

       {  super("定时接收信息");

         thread=new Thread(this);

         开始接收=new Button("开始接收");

         停止接收=new Button("停止接收");

         停止接收.addActionListener(this);

         开始接收.addActionListener(this);

         显示正在接收内容=new TextArea(10,10);

         显示正在接收内容.setForeground(Color.blue);

         显示已接收的内容=new TextArea(10,10);

         Panel north=new Panel();

         north.add(开始接收);

         north.add(停止接收);

         add(north,BorderLayout.NORTH);

         Panel center=new Panel();

         center.setLayout(new GridLayout(1,2));

         center.add(显示正在接收内容);

         center.add(显示已接收的内容);

         add(center,BorderLayout.CENTER);

         validate();

         port=5000;                                      

         try{ group=InetAddress.getByName("239.255.0.0"); 

             socket=new MulticastSocket(port);           

             socket.joinGroup(group);          

           }

        catch(Exception e) { }

        setBounds(100,50,360,380);  

        setVisible(true);

        addWindowListener(new WindowAdapter()

                         { public void windowClosing(WindowEvent e)

                           { System.exit(0);

                               }

                             });

                               

       }

      public void actionPerformed(ActionEvent e)

       { if(e.getSource()==开始接收)

          { 开始接收.setBackground(Color.blue);

            停止接收.setBackground(Color.gray);

            if(!(thread.isAlive()))

               { thread=new Thread(this);

               }

            try {  thread.start();

                 停止=false;       

               }

            catch(Exception ee) { }

          }

        if(e.getSource()==停止接收)

          { 开始接收.setBackground(Color.gray);

            停止接收.setBackground(Color.blue);

            thread.interrupt();

            停止=true;

          }

       }

     public void run()

      { while(true)  

        {  byte data[]=new byte[8192];

           DatagramPacket packet=null;

           packet=new DatagramPacket(data,data.length,group,port); 

           try {  socket.receive(packet);

                 String message=new String(packet.getData(),0,packet.getLength());

                 显示正在接收内容.setText("正在接收的内容:\n"+message);

                 显示已接收的内容.append(message+"\n");

               }

          catch(Exception e)  { }

          if(停止==true)

               { break;

               }

        }

      }

    public static void main(String args[])

      {  new Receive();

      }

    }

    习题十四(第14章)

    一、问答题

    12个参数。

    26个参数。

    37个参数。

    4.(1)创建AffineTransform对象,(2)进行旋转操作,(3)绘制旋转的图形。

    二、编写程序

    1.  import java.awt.*;

    import javax.swing.*;

    class MyCanvas extends Canvas {

      static int pointX[]=new int[5],

           pointY[]=new int[5];

       public void paint(Graphics g) {

          g.translate(200,200) ;    //进行坐标变换,将新的坐标原点设置为(200,200)。

          pointX[0]=0;

          pointY[0]=-120;

          double arcAngle=(72*Math.PI)/180;

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

             pointX[i]=(int)(pointX[i-1]*Math.cos(arcAngle)-pointY[i-1]*Math.sin(arcAngle));

             pointY[i]=(int)(pointY[i-1]*Math.cos(arcAngle)+pointX[i-1]*Math.sin(arcAngle));

          }

          g.setColor(Color.red);

          int starX[]={pointX[0],pointX[2],pointX[4],pointX[1],pointX[3],pointX[0]};

          int starY[]={pointY[0],pointY[2],pointY[4],pointY[1],pointY[3],pointY[0]};

          g.drawPolygon(starX,starY,6);

       }

    }

    public class E {

       public static void main(String args[]) {

          JFrame f=new JFrame();

          f.setSize(500,450);

          f.setVisible(true);

          MyCanvas canvas=new MyCanvas();

          f.add(canvas,"Center");

          f.validate();

          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }

    }

    2.   import java.awt.*;

    import javax.swing.*;

    import java.awt.geom.*;

    class MyCanvas extends Canvas {

       public void paint(Graphics g) {

         g.setColor(Color.red) ;

          Graphics2D g_2d=(Graphics2D)g;

          QuadCurve2D quadCurve=

          new  QuadCurve2D.Double(2,10,51,90,100,10);

          g_2d.draw(quadCurve);

          quadCurve.setCurve(2,100,51,10,100,100);

          g_2d.draw(quadCurve);

       }

    }

    public class E {

       public static void main(String args[]) {

          JFrame f=new JFrame();

          f.setSize(500,450);

          f.setVisible(true);

          MyCanvas canvas=new MyCanvas();

          f.add(canvas,"Center");

          f.validate();

          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }

    }

    3.   import java.awt.*;

    import javax.swing.*;

    import java.awt.geom.*;

    class MyCanvas extends Canvas {

       public void paint(Graphics g) {

          g.setColor(Color.red) ;

          Graphics2D g_2d=(Graphics2D)g;

          CubicCurve2D cubicCurve=

          new CubicCurve2D.Double(0,70,70,140,140,0,210,70);

          g_2d.draw(cubicCurve);

       }

    }

    public class E {

       public static void main(String args[]) {

          JFrame f=new JFrame();

          f.setSize(500,450);

          f.setVisible(true);

          MyCanvas canvas=new MyCanvas();

          f.add(canvas,"Center");

          f.validate();

          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }

    }

    4.   import java.awt.*;

    import javax.swing.*;

    import java.awt.geom.*;

    class Flower extends Canvas

    {  public void paint(Graphics g)

       {  Graphics2D  g_2d=(Graphics2D)g;

          //花叶两边的曲线: 

          QuadCurve2D

          curve_1=new  QuadCurve2D.Double(200,200,150,160,200,100);

          CubicCurve2D curve_2=

          new  CubicCurve2D.Double(200,200,260,145,190,120,200,100);

          //花叶中的纹线:

          Line2D line=new Line2D.Double(200,200,200,110); 

          QuadCurve2D leaf_line1=

          new  QuadCurve2D.Double(200,180,195,175,190,170);

          QuadCurve2D leaf_line2=

          new  QuadCurve2D.Double(200,180,210,175,220,170);

          QuadCurve2D leaf_line3=

          new  QuadCurve2D.Double(200,160,195,155,190,150);

          QuadCurve2D leaf_line4=

          new  QuadCurve2D.Double(200,160,214,155,220,150);  

          //利用旋转来绘制花朵: 

          AffineTransform trans=new AffineTransform();

          for(int i=0;i<6;i++)

          {   trans.rotate(60*Math.PI/180,200,200);

              g_2d.setTransform(trans);

              GradientPaint gradient_1=

              new GradientPaint(200,200,Color.green,200,100,Color.yellow);

              g_2d.setPaint(gradient_1);

              g_2d.fill(curve_1);

              GradientPaint gradient_2=new

              GradientPaint(200,145,Color.green,260,145,Color.red,true);

              g_2d.setPaint(gradient_2);

              g_2d.fill(curve_2);

              Color c3=new Color(0,200,0); g_2d.setColor(c3);

              g_2d.draw(line);

              g_2d.draw(leaf_line1); g_2d.draw(leaf_line2); 

              g_2d.draw(leaf_line3); g_2d.draw(leaf_line4);

          }

          //花瓣中间的花蕾曲线:

          QuadCurve2D center_curve_1=

          new QuadCurve2D.Double(200,200,190,185,200,180);

          AffineTransform trans_1=new AffineTransform();

          for(int i=0;i<12;i++)

          {  trans_1.rotate(30*Math.PI/180,200,200);

             g_2d.setTransform(trans_1);

             GradientPaint gradient_3=

             new GradientPaint(200,200,Color.red,200,180,Color.yellow);

             g_2d.setPaint(gradient_3);

             g_2d.fill(center_curve_1);

          }

       }

    }

    public class E {

       public static void main(String args[]) {

          JFrame f=new JFrame();

          f.setSize(500,450);

          f.setVisible(true);

          Flower canvas=new Flower();

          f.add(canvas,"Center");

          f.validate();

          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }

    }

    5 import java.awt.*;

    import javax.swing.*;

    import java.awt.geom.*;

    class Moon extends Canvas

    {  public void paint(Graphics g)

       {  Graphics2D g_2d=(Graphics2D)g;

          Ellipse2D ellipse1=

          new Ellipse2D. Double (20,80,60,60),

          ellipse2=

          new Ellipse2D. Double (40,80,80,80);

          g_2d.setColor(Color.white);

          Area a1=new Area(ellipse1),

               a2=new Area(ellipse2);

          a1.subtract(a2);             //"差"

          g_2d.fill(a1);

       }

    }

    public class E {

       public static void main(String args[]) {

          JFrame f=new JFrame();

          f.setSize(500,450);

          f.setVisible(true);

          Moon moon=new Moon();

          moon.setBackground(Color.black);

          f.add(moon,"Center");

          f.validate();

          f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

      }

    }

    习题十五(第15章)

    一、问答题

    1LinkedList使用链式存储结构,ArrayList使用顺序存储结构。

    2迭代器遍历在找到集合中的一个对象的同时,也得到待遍历的后继对象的引用,因此迭代器可以快速地遍历集合。

    3不是。

    4.用HashMap<K,V>来存储。

    二、阅读程序

    1.8。

    2.ABCD。

    三、编写程序

    1.  import java.util.*;

    public class E {

       public static void main(String args[]) {

          Stack<Integer> stack=new Stack<Integer>();

          stack.push(new Integer(3));

          stack.push(new Integer(8));

          int k=1;

          while(k<=10) {

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

              Integer F1=stack.pop();

              int f1=F1.intValue();

              Integer F2=stack.pop();

              int f2=F2.intValue();

              Integer temp=new Integer(2*f1+2*f2);

              System.out.println(""+temp.toString());

              stack.push(temp);

              stack.push(F2);

              k++;

            }

          }

       }

    }

    2.   import java.util.*;

    class Student implements Comparable {

       int english=0;

       String name;

       Student(int english,String name) {

          this.name=name;

          this.english=english;

       }

       public int compareTo(Object b) {

          Student st=(Student)b;

          return (this.english-st.english);

       }

    }

    public class E {

      public static void main(String args[]) {

         List<Student> list=new LinkedList<Student>();

         int score []={65,76,45,99,77,88,100,79};

         String name[]={"张三","李四","旺季","加戈","为哈","周和","赵李","将集"};

         for(int i=0;i<score.length;i++){

                 list.add(new Student(score[i],name[i]));

         }

         Iterator<Student> iter=list.iterator();

         TreeSet<Student> mytree=new TreeSet<Student>();

         while(iter.hasNext()){

             Student stu=iter.next();

             mytree.add(stu);

         }

         Iterator<Student> te=mytree.iterator();

         while(te.hasNext()) {

            Student stu=te.next();

            System.out.println(""+stu.name+" "+stu.english);

         }

      }

    }

    3.  import java.util.*;

    class UDiscKey implements Comparable {

       double key=0;

       UDiscKey(double d) {

         key=d;

       }

       public int compareTo(Object b) {

         UDiscKey disc=(UDiscKey)b;

         if((this.key-disc.key)==0)

            return -1;

         else

            return (int)((this.key-disc.key)*1000);

      }

    }

    class UDisc{

        int amount;

        double price;

        UDisc(int m,double e) {

           amount=m;

           price=e;

       }

    }

    public class E {

       public static void main(String args[ ]) {

          TreeMap<UDiscKey,UDisc>  treemap= new TreeMap<UDiscKey,UDisc>();

          int amount[]={1,2,4,8,16};

          double price[]={867,266,390,556};

          UDisc UDisc[]=new UDisc[4];

          for(int k=0;k<UDisc.length;k++) {

             UDisc[k]=new UDisc(amount[k],price[k]);

          }

          UDiscKey key[]=new UDiscKey[4] ;

          for(int k=0;k<key.length;k++) {

             key[k]=new UDiscKey(UDisc[k].amount);

          }

          for(int k=0;k<UDisc.length;k++) {

             treemap.put(key[k],UDisc[k]);         

          }

          int number=treemap.size();

          Collection<UDisc> collection=treemap.values();

          Iterator<UDisc> iter=collection.iterator();

          while(iter.hasNext()) {

             UDisc disc=iter.next();

             System.out.println(""+disc.amount+"G "+disc.price+"元");

          }

          treemap.clear();

          for(int k=0;k<key.length;k++) {

             key[k]=new UDiscKey(UDisc[k].price);

          }

          for(int k=0;k<UDisc.length;k++) {

             treemap.put(key[k],UDisc[k]);

          }

          number=treemap.size();

          collection=treemap.values();

          iter=collection.iterator();

          while(iter.hasNext()) {

             UDisc disc=iter.next();

             System.out.println(""+disc.amount+"G "+disc.price+"元");

          }

        }

    }

    习题十六(第16章)

    1 import java.applet.*;

    import java.awt.*;

    import java.awt.event.*; 

    import javax.swing.*;

    public class Xiti2 extends Applet implements ActionListener

    {  TextField text1,text2;

       Label label;

       public void init()

       {  text1=new TextField(10);

          text2=new TextField(20);

          Box box1=Box.createHorizontalBox();

          Box box2=Box.createHorizontalBox();

          Box boxV=Box.createVerticalBox();

          box1.add(new Label("输入一个数回车确定:"));

          box1.add(text1);

          label=new Label("数的平方:");

          box2.add(label);

          box2.add(text2);

          boxV.add(box1);

          boxV.add(box2);

          add(boxV);

          text2.setEditable(false);

          text1.addActionListener(this);

       }

       public void actionPerformed(ActionEvent e)

       {  String number=e.getActionCommand();

          try{ double n=Double.parseDouble(number);

               double m=n*n;

               label.setText(n+"的平方:");

               text2.setText(""+m);

               text1.setText("");

               validate();

             }

          catch(NumberFormatException exp)

             {  text2.setText(""+exp);

             }

       }

    }

    2 import java.applet.*;

    import java.awt.*;

    public class Rect extends Applet {

       int w,h;

       public void init() {

          String s1=getParameter("width");  //从html得到"width"的值。

          String s2=getParameter("height");  //从html得到"height"的值。

          w=Integer.parseInt(s1);

          h=Integer.parseInt(s2);

       }

       public void paint(Graphics g) {

          g.drawRect(10,10,w,h);

       }

    }

    /*<applet code= Rect.class width=280 height=500>

         <Param name="width"  value ="150">

         <Param name="height"  value ="175">

    </applet>*/

    展开全文
  • import java.util.Scanner; public class Demo7 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc =new Scanner(System.in
    
    
    写着玩的

    import java.util.Scanner;


    public class Demo7 {


    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc =new Scanner(System.in);
    int n=sc.nextInt();
    double sum=0.0;

    for (int j = 1; j <=n; j++) {
    int sub=1;
    for (int i = 1; i <=j; i++) {
    sub=sub*i;
    }
    if(j%2==0){
    sum=sum-1.0/sub;
    }

    if(j%2!=0){
    sum=sum+1.0/sub;
    }

    }

    System.out.println(sum);
    }
    }
    展开全文
  • 1.Java语言的主要贡献者是谁? -James Gosling 2.开发Java应用程序需要经过哪些主要步骤? -编写源文件、编译源文件生成字节码和加载运行字节码。 3.Java源文件是由什么组成的?一个源文件中必须要有public类吗? ...


    写下这篇文章的主要目的是帮助初学者更好地学习Java语言,所有题目都是照着书一个字一个字敲出来的,代码都是经过思考写上去的,每道题会有详细的解析,并非随便写个答案糊弄一下的,写作不易且看且珍惜。如果有错误或者有更优解请留言,我会注明ID并修改。

    一. P15 习题1

    1.问答题

    1.Java语言的主要贡献者是谁?

    -James Gosling
    

    2.开发Java应用程序需要经过哪些主要步骤?

    -编写源文件、编译源文件生成字节码和加载运行字节码。
    

    3.Java源文件是由什么组成的?一个源文件中必须要有public类吗?

    -Java源文件是由若干个书写形式互相独立的类组成。不一定,可以没有public类。(具体的分析见本章结尾总结。)
    

    4.如果JDK的安装目录是D:\jdk,应当怎样设置path和classpath的值?

    -path配置时将目录改为D:\jdk下的bin文件夹。
    -classpath配置时没有固定目录,方便查阅即可。
    

    5.Java源文件的扩展名是什么?Java字节码的扩展名是什么?

    -Java原文件的扩展名是.java,Java字节码的扩展名是.class
    

    6.如果Java应用程序主类的名字是Bird,编译之后,应当怎样运行该程序?

    -在Windows的cmd命令窗口下,编译之后,使用java Bird命令运行该程序。
    

    7.有哪两种编程风格,在格式上各有怎样的特点?
    -Allmans风格:也称“独行风格”,左右大括号各独占一行,如下列代码(不需要看懂代码只需要体会编程风格):

    class Allmans
    	{
    		public static void main(String[] args)
    		{
    			int result = 0;
    			for(int x = 1 ; x < 101; x++)
    			{
    				result = result + x;
    			}
    		}
    	}
    

    ※:当代码量较小时适合使用“独行”风格,代码布局清晰,可读性强。

    -Kernighan风格:也称“行尾”风格,如下列代码所示(不需要看懂代码只需要体会编程风格):

    public class Test01 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//CSDN \u6d3e duke \u661f
    		//需求:用for循环找出1~10000中所有的素数,要求每8个换一行输出
    		//素数:只能被1和自身整除的数。
    		int sum = 0;
    		for(int i=2;i<=10000;i++) {
    			boolean isSuShu = true;
    			for(int j=2;j<i;j++) {
    				if(i % j == 0) {
    					isSuShu = false;
    					break;
    				}
    			}
    			if(isSuShu) {
    				System.out.print(i + " ");
    				sum++;
    				if(sum % 8 == 0) {System.out.println();
    				}
    			}
    		}
    	}
    }
    

    二.选择题

    1.下列哪个是JDK提供的编译器? (B

    A. java.exe
    B. javac.exe
    C. javap.exe
    D. javaw.exe
    

    ※:A是Java解释器。B是Java编译器。C是Java反编译器。D大多用来运行GUI程序。

    2.下列哪个是Java应用程序主类中正确的main方法? (D

    A. public void main(String args[ ])
    B. static void main(String args[ ])
    C. public static void Main(String args[ ])
    D. public static void main(String args[ ])
    

    3.阅读下列Java源文件,并回答问题。

    public class Person {
    	void speakHello(){
    		System.out.println("您好,很高兴认识您");
    		System.out.println("nice to meet you");
    	}
    }
    class Xiti {
    	public static void main(String[] args){
    		Person zhang = new Person();
    		zhang.sperkHello;
    	}
    }
    

    (1)上述源文件的名字是什么?

    -Person.java
    

    (2)编译上述源文件将生成几个字节码文件?这些字节码文件的名字都是什么?

    -两个字节码文件。Person.java和Xiti.java。
    ```
    这里后缀应该是.class,写的时候没仔细看。(感谢咕噜咕噜崩的纠错)···
    

    (3)在命令执行java Person 得到怎样的错误提示?执行java xiti得到怎样的错误提示? 执行java Xiti.class 得到怎样的错误提示?执行java Xiti得到怎样的输出结果?

    -错误: 错误: 在类 Person 中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application
    -错误: 找不到或无法加载主类 xiti 原因: java.lang.ClassNotFoundException: xiti
    -您好,很高兴认识您 nice to meet you
    

    小结:

    public class和class的区别:
    *一个java源文件当中可以定义多个class
    *一个java源文件当中public class不是必须的
    *一个class会定义生成一个xxx.class字节码文件
    *一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致。
    *每一个class当中都可以编写main方法,都可以设定程序的入口
    *※:在cmd命令窗口执行java xxx,那么要求xxx.class当中必须有main方法,否则报错。

    一.P30 习题2

    1.问答题

    (1)什么叫标识符?标识符的规则是什么?false是否可以作为标识符?

    第一问:
    用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序,称为标识符。
    
    第二问:
    -只能由"数字、 字母、下划线_、 美元符号S”组成,不能含有其他符号
    -不能以数字开头
    -严格区分大小写
    -关键字不能做标识符
    -理论上无长度限制,但是最好不要太长
    -Java语言源代码采用的是Unicode编码方式,所以"标识符”可以中文。
    
    第三问:false属于数据类型的关键字不能作为标识符。	
    

    (2)什么叫关键字?true和false是否是关键字?请说出6个关键字。

    第一问:关键字就是Java语言中已经被赋予特定意义的一些单词
    第二问:if、for、while、public、return、class(其实有很多关键字,可以自行百度)
    

    (3)Java的基本数据类型都是什么?

    八种基本数据类型:byte,int,short,long,float,double,boolean,char
    

    (4)float型常量和double型常量在表示上有什么区别?

    在Java语言当中,带小数点的字面值默认时被当作double型数据,如果在数据后面加f/F表示float型,加d/D表示double型。
    

    (5)怎样获取一维数组的长度,怎样获取二维数组中一维数组的个数?

    第一问:一维数组名.length。
    第二问:二维数组名.length。
    

    2.选择题

    (1)下列哪项字符可以作为标识符? (C)
    A.true B.default C._int D.good-class

    解析:A和B都是关键字不能作为标识符,D中含有除下划线_美元符号$外的其他字符,所以不能做为标识符。
    

    (2)下列哪三项是正确的float变量的声明? (ADF
    A.float foo = -1;
    B.float foo = 1.0;
    C.float foo = 42e1;
    D.float foo = 2.02f;
    E.float foo = 3.03d;
    F. float foo = 0x0123;

    解析:B中没有加f/F,上面说过在Java语言当中带小数点的字面值默认是double型,大容量类型转小容量类型需要加强制类型转换符。C是42*10即420是一个整型字面值,不是浮点型。E中后面的d是double型后缀,应该用f/F。
    

    (3)下列哪一项叙述是正确的? (B
    A.char 型字符在Unicode表中的位置范围是0~32767
    B.char 型字符在Unicode表中的位置范围是0~65535
    C.char 型字符在Unicode表中的位置范围是0~65536
    D.char 型字符在Unicode表中的位置范围是-32768~32767
    (4)以下哪两项是正确的char型变量的声明? (BE)
    A.char ch = “R”;
    B.char ch = ‘\’;
    C.char ch = ‘ABCD’;
    D.char ch = “ABCD”
    E.char ch = ‘\ucafe’;
    F.char ch = ‘\u10100’;

    解析:首先明确char类型是占2个字节的。B中反斜杠对反斜杠转义,得到一个反斜杠\,可以。E中是一串Unicode码,转换后只占两个字节,也可以。
    

    (5)下列程序中哪些【代码】是错误的?(解析写在代码中)

    	public class E {
    		public static void main(String[] args) {
    			int x = 8;			
    			byte b = 127;		//【代码1】
    			b = x;				//【代码2】b是byte类型的变量,而x是int类型的变量
    			x = 12L;			//【代码3】L表示该字面值是long类型的字面值,而x是int类型的变量
    			long y = 8.0;		//【代码4】8.0是double类型的字面值,而y是long类型的变量
    			float z = 6.89;		//【代码5】6.89是double类型的字面值,而z是float类型的变量
    		}
    }
    

    (6)对于“int a[] = new int [3]”,下列哪个叙述是错误的? (B
    A. a.length 的值是3。
    B. a[1]的值是1。
    C. a[0]的值是0。
    D. a[a.length-1]的值等于a[2]的值。

    3.阅读或调试程序

    此题属于操作题,请自己上机操作体会。
    

    4.编程题

    (1)编写一个应用程序,给出汉子“你”、“我”、“他”在Unicode表中的位置

    public class A {
       public static void main(String args[]) {
         System.out.println((int)'你');
    
         System.out.println((int)'我');  
    
         System.out.println((int)'他');
    
       }
    
    }
    

    小知识:可以使用JDK中自带的native2ascii.exe命令,可以将中文转换成Unicode编码形式。使用方法:在cmd命令行输入native2ascii,回车,然后输入文字之后回车即可得到Unicode编码。

    (2)编写一个Java应用程序,输出全部的希腊字母

     public class B {
       public static void main (String args[ ]) {
          char first = 'α';
          char end = 'ω';
          for(char i=first ; c<=end ; c++){
            System.out.println(i);
            }
        }
    }
    

    1.问答题

    (1)关系运算符的运算结果是怎样的数据类型?

    会返回一个布尔类型(boolean)的值。(true、fasle)
    ※:关系运算符(也叫做比较运算符)包括:>、<、==、>=、<=、!=
    

    (2)if语句中的条件表达式的值是否可以是int类型?

    不行。条件表达式只能是一个布尔表达式,而布尔表达式的返回值是boolean类型。
    

    (3)while语句中的条件表达式的值是什么类型?

    布尔类型。
    

    (4)switch语句中必须有default选项吗?

    可以没有default选项。
    

    (5)在while语句的循环体中,执行break语句的效果是什么?

    当程序执行到break语句时,直接退出while循环,不执行while循环中的任何代码。
    

    (6)可以用for语句代替while语句的作用吗?

    可以。但是编写出来的代码不同,执行出来效果一样。
    

    知识点概括
    一.if语句的语法结构,有四种编写方式:

    第一种:
    	if(布尔表达式){
    		java语句;
    	}	//只有当表达式的值为true时,才执行java语句。
    	
    第二种:
    	if(布尔表达式){
    		java语句1;
    	}else{
    		java语句2;
    	}  //当表达式的值为true时,执行java语句1。
    	   //当表达式的值为false时,执行java语句2。
    	   
    第三种:if(布尔表达式1){
    		java语句1;
    	}else if (布尔表达式2){
    		java语句2;
    	}else if (布尔表达式3){
    		java语句3;
    	}else if (布尔表达式4){
    		java语句4;
    	}……	//布尔1为true执行java语句1,布尔2为true执行java语句2。以此类推。
    	
    第四种:if(布尔表达式1){
    		java语句1;
    	}else if (布尔表达式2){
    		java语句2;
    	}else if (布尔表达式3){
    		java语句3;
    	}else if (布尔表达式4){
    		java语句4;
    	}else{
    		java语句5;
    	}……	//布尔1为true执行java语句1,布尔2为true执行java语句2。以此类推。当所有布尔表达式都为false时,执行else后面的java语句5。
    

    ※:对于java中的if语句来说,只要有一个分支执行,整个if语句全部结束。以上的第二种和第四种编写方式都带有else,这两种方式可以确保100%会有分支执行。

    二.switch语句代码格式:

    switch(int或String类型的字面值或变量){
    	case int或String类型的字面值或变量1:
    		java语句;
    		······
    		break; 
    	case int或String类型的字面值或变量2:
    		java语句;
    		······
    		break; 
    	case int或String类型的字面值或变量3:
    		java语句;
    		······
    		break; 
    	}
    

    switch语句的执行原理:
    switch后面小括号中的“数据”和case后面的“数据”进行一 一匹配(按照自上而下的顺序一一匹配,所以效率不高),匹配成功的分支执行。若代码后面有default(默认的意思,可以不写),并且所有的case都没有匹配成功,则执行default后面的java语句。
    ※:当执行到break;语句时,整个switch语句结束。
    注意:如果匹配成功后,该分支中没有break;语句的话,他会直接进入下一个分支(不进行匹配),这种现象被称为case穿透现象。【提供break;可以避免穿透现象】
    注意:在JDK7之后的版本是可以匹配String类型的字面值或变量,如果用的是JDK6和之前的版本则只能匹配int类型的字面值或变量。

    三.for循环的语法结构:

    1. for(初始化表达式;布尔表达式;更新表达式){
      循环体(又java语句构成)
      }
    2. 执行原理:
      *小括号内的表达式都不是必须的,但是两个分号“;”是必须的!
      *初始化表达式最先执行,并且在整个for循环当中只执行一次
      *布尔表达式必须是true/false,不能是其他值。
    3. ※:在for循环中定义的变量,作用域为for循环,在main方法中无法访问。

    四.while,do while

    1.while(布尔表达式){
    循环体;
    }

    2.while循环的执行原理:
    *先判断布尔表达式的结果
    *true → 执行循环体
    *判断布尔表达式的结果
    *true → 执行循环体
    *判断布尔表达式的结果
    *true → 执行循环体
    ·············
    *false → 循环结束
    *false → 循环结束
    *false → 循环结束

    3.while循环的循环次数:0~N次。

    4.※:在编译的时候不对变量进行分配内存,只有在运行的时候才分配。

    2.选择题

    (1)下列哪个叙述是正确的? (A
    A. 5.0/2+10的结果是double类型的数据。
    B. (int)5.8+1.0 的结果是int类型的数据。
    C. ‘苹’+'果’的结果是char类型的数据。
    D. (short)10+'a’的结果是short类型的数据
    解析:

    	A:5.0/2+10,这个式子结果是12.0,是double类型的数据。
    	B:虽然对5.8使用了强制类型转换符,但是后面的1.0没有使用,在加法	运算符执行之后,结果为6.8还是double类型的数据。
    	C:结果"苹果",是一个字符串类型的数据。注意:char类型占两个字节,中文正好占两个字节,苹果两个字占4个字节,超出了char类型的范围。
    	D:结果为107,是一个int类型的数据。
    

    (2)用下列哪个代码替换程序标注的【代码】会导致编译错误? (C

    A. m-- > 0
    B. m++ > 0
    C. m = 0
    D. m > 100 && true
    
    public class E {
    	public static void main(String[] args) {
    		int m=10,n=0;
    		while(【代码】) {
    			n++;
    		}
    	}
    }
    

    解析:while小括号内是一个布尔表达式,需要的是一个布尔类型的值,ABD都满足,而C是赋值运算符,而不是“==”运算符。

    (3)假设有“int x = 1;”,以下哪个代码导致“可能损失精度,找到int需要char”这样的编译错误? (C
    A. short t = 12 + ‘a’;
    B. char c = ‘a’ + 1;
    C. char m = ‘a’ + x;
    D. byte n = ‘a’ + 1;

    3.阅读程序

    不做过多解释,具体需要上机体会。
    

    4.编程题(重点,需要体会编程思想)

    (1)编写应用程序求1!+2!+······+10!。

    public class Test01 {
    
    	public static void main(String[] args) {
    		int result=0,updata=1;
    		int isno = 1;
    		while(isno <= 10) {
    			//循环10次
    			result = result + updata;//结果
    			isno++;//每次循环自增1
    			updata = updata * isno;//做阶乘
    		}
    		System.out.println("1!+2!+····+10!" + "=" + result);//输出结果
    	}
    }
    
    

    (2)编写一个应用程序求100以内的全部素数。

    public class Test02 {
    
    	public static void main(String[] args) {
    		for(int i=2;i<=100;i++) {
    			boolean isSuShu = true;//默认将i看做一个素数【标记在开发中比较常用】
    			for(int j=2;j<i;j++) {
    				if(i % j ==0) {
    					//非素数
    					isSuShu = false;
    					//已经知道i是非素数,跳出循环,效率更高。
    					break;
    				}
    			}
    			if(isSuShu) {
    				System.out.println(i);
    			}
    		}
    	}
    

    (3)分别用do while和for循环计算1+1/2!+1/3!+1/4!+······的前20项和。

    do while:

    public class Test03 {
    
    	  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("1+1/2!+1/3!+1/4!+······的前20项和="+sum);
    	  }
    }
    

    for:

    public class Test03 {
    
    	  public static void main(String args[]) {
    		  double sum=0,j=1,i=1;
    		  for(;i <= 20; i++) {
    	          j = j * (1.0 / i);
    	          sum = sum + j;
    		  }
    		  System.out.println("1+1/2!+1/3!+1/4!+······的前20项和="+sum);
    	  }
    }
    
    

    (4)一个数如果恰好等于它的因子之和,这个数就称为完数。编写应用程序求1000之内的所有完数。

    通过for循环嵌套来实现:

    public class Test03 {
    
    	public static void main(String args[]) {
    	     int result=0,i,j;
    
    	     for(i=1;i<=1000;i++) {	//外层循环1000次
    	        for(j=1,result=0;j<i;j++) {
    	           if(i%j==0)
    	               result = result + j;
    	        }
    	        if(result==i)	//判断是否为完数
    	           System.out.println("完数:"+i);
    	     }
    	  }
    }
    

    (5)编写应用程序,使用for循环语句计算8+88+888+····前10项之和。

    方法一:使用while循环机制
    
    public class Test05 {
    
    	public static void main(String[] args) {
    		//思路:可以倒过来看,第十项有十个8,
    		double i = 0.8888888888d;
    		long temp = 0;  //temp是一个中间变量
    		long result = 0;
    		while(i <= 8888888888.0) {
    			i *= 10.0;
    			temp = (long)i;  //强制类型转换会舍弃小数点后面的数,通过这种方式来实现。
    			result = result + temp;
    		}
    		System.out.println(result);
    	}
    
    }
    

    方法二:通过for循环来实现

    public class Test05{
        public static void main(String args[]){
            long a,b=0, c=0;
            for(a=1;a<=10;a++){     //循环10次
                b=b*10+8;           //每一个数是前一个数的10倍加8
                c+=b;               //计算10项之和
            }
            System.out.print("8+88+888...前10项之和 = " + c);
        }
    }
    

    ※:这两中方法的实现思路都可以相互转换,只不过写出来的形式不同。
    其他思路:
    //把888当做字符串来看待,可以利用for循环,每循环一次就加个字符’8’
    ※:只是说明思路,不写具体的代码,因为基础篇中没有String转int的方法。
    解析:第一次循环,i是一个字符串"8",然后转换成int类型的8,利用中间变量result来累加,第二次循环在拼接一个8,即"8"+“8"得到"88”,然后转花为int类型。以此类推。

    (6)编写应用程序,输出满足1+2+3+·····+n<8888的最大正整数n。

    方法一:通过for循环实现

    public class Test06{
    
    	public static void main(String[] args) {
    		int result = 0;
    		for(int n=1;;) {
    			result = result + n;
    			n++;
    			if(result > 8888) {
    				System.out.println("满足条件的最大整数n为" + (n-1));
    				break;
    			}else continue;
    		}
    	}
    }
    

    方法二:通过while循环来实现

    public class Test06 {
    
    	  public static void main(String args[]) {
    	      int n=1;
    	      int result=0;
    	      while(true) {
    	        result = result + n;
    	        n++;
    	        if(result >= 8888)
    	          break;
    	      }
    	      System.out.println("满足条件的最大整数n为:"+(n-1));
    	 }
    
    }
    
    

    一. P105 习题4

    1.问答题

    (1)面向对象语言有哪三个特性?

    封装性、继承性、多态性。
    

    (2)类名应当遵守怎样的编程风格?

    遵守标识符的命名规则(忘记了可以去习题2那里看看),首字母大写,后面每个单词首字母大写,最好见名知意。
    

    (3)变量和方法的名字应当遵守怎样的编程风格?

    遵守标识符的命名规则,首字母小写,以后每个单词首字母大写,最好见名知意。
    

    (4)类体中声明成员变量是为了体现对象的属性还是行为?

    是为了体现对象的属性。(这个稍微理解一下就记住了,跟下面一题结合一下,记住一个另一个就不会忘记了。)
    

    (5)类体内容中定义的非构造方法是为了体现对象的属性还是行为?

    是为了体现对象的行为。
    

    (6)什么时候使用构造方法?构造方法有类型吗?

    在创建对象的时候会使用构造方法。有类型,但是在语法中不写(类型是它本身)。
    

    (7)类中的实例变量在什么时候回被分配内存空间?

    在该类构造方法执行的时候,会给该类中的实例变量分配内存空间。
    

    (8)什么叫方法的重载?构造方法可以重载吗?

    在同一个类中方法名相同但是形参不同(包括数量、顺序、类型)的方法构成重载。构造方法也可以重载。
    

    (9)类中的实例方法可以操作类变量(static 变量)吗?类方法(static 方法)可以操作实例变量吗?

    (10)类中的实例方法可以用类名直接调用吗?

    不行。需要创建对象,通过对象的方式来调用。
    

    (11)简述类变量和实例变量的区别。

    1、实例变量有默认值而类变量没有。
    2、实例变量有对象的参与而类变量没有。
    

    (12)this 关键字代表什么?this可以出现在类方法中吗?

    代表当前的引用所指向的对象(也可以理解为代表调用当前方法的对象)。不行。
    

    2.选择题

    (1)下列哪个叙述是正确的? (B
    A. Java应用程序由若干个类所构成,这些类必须在一个源文件中。
    B. Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中,其中必须有一个源文件含有主类。
    C. Java源文件必须含有主类。
    D. Java源文件如果含有主类,主类必须是public类。

    (2)下列哪个叙述是正确的? (D
    A. 成员变量的名字不可以和局部变量的名字相同。
    B. 方法的参数名字可以和方法中声明的局部变量的名字相同。
    C. 成员变量没有默认值、
    D. 局部变量没有默认值。

    解析:成员变量的名字和局部变量的名字可以相同。成员变量是有默认值的。

    数据类型 默认值
    byte,short,int,long 0
    float,double 0.0
    boolean false
    char \u0000
    引用数据类型 null

    (3)对于下列Hello类,哪个叙述是正确的? (D
    A. Hello 类有两个构造方法
    B. Hello 类的 int Hello()方法是错误的方法。
    C. Hello 类没有构造方法。
    D. Hello 无法通过编译,因为其中的hello方法的方法头是错误的(没有类型)。
    解析:A选项:只有一个构造方法。就是第一个Hello(int m)这个方法。 B选项:是正确的,只不过修饰符列表是缺省的。 C选项:看A

    public class Hello {
    	Hello(int m){	
    	}
    	int Hello() {
    		return 20;
    	}
    	hello(){
    		
    	}
    }
    

    (4)对于下列Dog类,哪个叙述是错误的? (D
    A. Dog(int m)与Dog(double m)是互为重载的构造方法
    B. int Dog(int m)与void Dog(double m)是互为重载的非构造方法
    C. Dog类只有两个构造方法,而且没有无参数的构造方法
    D. Dog类有三个构造方法
    解析:D选项:代码中前两个是构造方法。剩下的都是成员方法

    public class Dog {
    	Dog(int m){
    	}
    	Dog(double m){
    	}
    	int Dog(int m) {
    		return 23;
    	}
    	void Dog(double m) {
    	}
    }
    
    

    (5)下列哪些类的声明是错误的? (CD
    A. class A
    B. public class A
    C. protected class A
    D. private class A
    解析:
    在这里插入图片描述

    (6)下列A类中【代码1】~【代码5】哪些是错误的?
    解析:代码【1、4】是错误的。 【代码1】是想对Tom类的属性x的值修改为22,但是这个x是被private修饰过的,只能在本类(Tom)中访问。 【代码4】被private修饰,只能在本类中访问。

    class Tom {
    	private int x = 120;
    	protected int y = 20;
    	int z = 11;
    	private void f() {
    		x = 200;
    		System.out.println(x);
    	}
    	void g(){
    	x = 200;
    	System.out.println(x);
    	}
    }
    
    public class A{
    	public static void main(String[] args) {
    		Tom tom = new Tom();
    		tom.x = 22;		//【代码1】
    		tom.y = 33;		//【代码2】
    		tom.z = 55;		//【代码3】
    		tom.f();		//【代码4】
    		tom.g();		//【代码5】
    	}
    }
    

    (7)下列E类的类体中哪些【代码】是错误的?
    解析:【代码4】是错误的。参数传递的是数值。而局部变量m声明了但没有赋值,无法进行“+”法运算,因为这个m没有具体的值。

    public class E {
    	int x;					//【代码1】
    	long y;					//【代码2】
    	public void f(int n) {
    		int m;				//【代码3】
    		int t = n + m;		//【代码4】
    	}
    }
    
    

    3.阅读程序

    ※:别懒啊,一定要上机自己敲。

    4.编程题(仅供参考,可以自己对照着写)

    CPU类:

    package code111;
    
    public class CPU {
    	int speed;
    
    	public int getSpeed() {
    		return speed;
    	}
    
    	public void setSpeed(int m) {
    		speed = m;
    	}
    }
    

    硬盘类:

    package code111;
    
    public class HardDisk {
    	int amount;
    
    	public int getAmount() {
    		return amount;
    	}
    
    	public void setAmount(int m) {
    		amount = m;
    	}
    }
    
    

    PC类:

    package code111;
    
    public class PC {
    	HardDisk HD;
    	CPU cpu; 
    	
    	public void setCPU(CPU c) {
    		cpu = c;
    	}
    	public void setHardDisk(HardDisk h) {
    		HD = h;
    	}
    	public void show() {
    		System.out.println("cpu的速度是:" + cpu.getSpeed());
    		System.out.println("硬盘的容量是:" + HD.getAmount());
    	}
    }
    

    主类Test:

    package code111;
    
    public class Test {
    
    	public static void main(String[] args) {
    		CPU cpu = new  CPU();
    		cpu.setSpeed(2200);
    		
    		HardDisk disk = new HardDisk();
    		disk.setAmount(200);
    		
    		PC pc = new PC();
    		
    		pc.setCPU(cpu);
    		pc.setHardDisk(disk);
    		pc.show();
    	}
    
    }
    

    我们来回顾一下面向对象的核心内容(封装继承和多态):

    1、封装之后才会形成真正的“对象”,才会有独立体的概念。私有的属性不能在外部直接访问,这就是封装(只能通过入口(一般是set、get方法)来访问)。

    2、有了继承之后才有了“方法重写”和“多态机制”(继承最重要的作用)。还有一个作用是“代码复用”。在Java中只支持单继承。
    哪些不能被继承呢? 私有的、构造方法。这些不能被继承

    3、父类型引用指向子类型对象这种机制导致程序存在编译阶段绑定和运行阶段绑定两种不同的状态,这种机制称为一种多态语法机制。

    4、多态中会遇到的异常(java.lang.ClassCastException异常),这种异常出现在向下转型的时候。使用instanceof运算符配合一些逻辑代码可以避免此类异常。

    第五章以及后面的内容我会抽时间更新的,肯定不会断更的。由于比较忙,会找空闲时间来更新的,抱歉啦。你们的三连是我最大的动力୧(๑•̀◡•́๑)૭

    展开全文
  • 这是我自己写的《Java实战经典》一书第五章的课后题答案(代码)
  • java第四章课后习题 自己写的课后习题如有错误多多包涵 获得一个num1到num2之间随机数的方法(部分题目会使用) static int GetRandomNum(int num1,int num2) { int result=(int)(num1+Math.random()*(num2-num1...

    java第五章课后习题


    自己写的课后习题如有错误多多包涵


    获得一个num1到num2之间随机数的方法(部分题目会使用)

    	static int GetRandomNum(int num1,int num2)
    	{
    		int result=(int)(num1+Math.random()*(num2-num1+1));
    		return result;
    	}
    

    5.1

    		int a[]=new int[10];		//exercises 5.1
    		int i,j,temb;
    		for(i=0;i<a.length;i++)
    		{
    			a[i]=GetRandomNum(10,100);
    		}
    		System.out.println("排序前数组:");
    		for(i=0;i<a.length;i++)
    		{
    			System.out.print(a[i]);
    			System.out.print('\t');
    		}
    		for(i=0;i<a.length;i++)
    		{
    			for(j=i+1;j<a.length;j++)
    			{
    				if(a[i]>a[j])
    				{
    					temb=a[i];
    					a[i]=a[j];
    					a[j]=temb;
    				}
    			}
    		}
    		System.out.println("");
    		System.out.println("排序后数组:");
    		for(i=0;i<a.length;i++)
    		{
    			System.out.print(a[i]);
    			System.out.print('\t');
    		}
    

    5.1(2)

    		int a[]=new int[10];		//exercises 5.1(2)
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=GetRandomNum(10,100);
    		}
    		System.out.println("排序前数组:");
    		for(int v:a)//增强for循环输出数组
    		{
    			System.out.print(v);
    			System.out.print('\t');
    		}
    		Arrays.sort(a);//从小到大排序数组
    		System.out.println("");
    		System.out.println("排序后数组:");
    		for(int v:a)//增强for循环输出数组
    		{
    			System.out.print(v);
    			System.out.print('\t');
    		}
    

    5.2

    		Scanner sc=new Scanner(System.in);		//exercises 5.2
    		int YanghuiTriangle[][];
    		int n,i=0,j;
    		System.out.print("请输入需要输出的杨辉三角的行数:");
    		n=sc.nextInt();
    		YanghuiTriangle=new int[n][];
    		for(i=0;i<n;i++)
    		{
    			YanghuiTriangle[i]=new int[i+1];
    			for(j=0;j<=i;j++)
    			{
    				if(j==0)YanghuiTriangle[i][j]=1;
    				else if(j!=i)
    				{
    					YanghuiTriangle[i][j]=YanghuiTriangle[i-1][j-1]+YanghuiTriangle[i-1][j];
    				}
    				else
    				{
    					YanghuiTriangle[i][j]=1;
    				}		
    			}
    		}
    		for(i=0;i<YanghuiTriangle.length;i++)
    		{
    			for(j=0;j<YanghuiTriangle[i].length;j++)
    			{
    				System.out.print(YanghuiTriangle[i][j]);
    				System.out.print('\t');
    			}
    			System.out.println("");
    		}
    

    5.3

    		Scanner sc=new Scanner(System.in); //exercises 5.3
    		int a[],i,j,k;
    		a = new int[10];
    		for(i=0; i<a.length;i++)
    		{
    			System.out.print("请输入第"+(i+1)+ "个元素");
    			k = sc.nextInt();
    			a[i] = k;
    		}
    		System.out.println("转换前数组为:");
    		for(i=0; i<a.length;i++)
    		{
    			System.out.print(a[i]+" ");
    		}
    		System.out.println(" ");
    		for(i=0,j=a.length-1;i<a.length;i++,j--)
    		{
    			k=a[i];
    			a[i]=a[j];
    			a[j]=k;
    		}
    		System.out.println("转换后数组为:");
    		for(i=0;i<10;i++)
    		{
    			System.out.print(a[i]+" ");
    		}
    

    5.4

    		Scanner sc=new Scanner(System.in);	//exercises 5.4
    		int a[][];
    		int i,j,m,n;
    		System.out.println("请输入数组行数:");
    		m=sc.nextInt();
    		System.out.println("请输入数组列数:");
    		n=sc.nextInt();
    		a=new int[m][n];
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				a[i][j]=GetRandomNum(10,99);
    			}
    		}
    		System.out.println("输出数组");
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				System.out.print(a[i][j]+" ");
    			}
    			System.out.println("");
    		}
    		m=0;n=0;
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				if(a[m][n]>a[i][j])
    				{
    					m=i;
    					n=j;
    				}
    			}
    		}
    		System.out.println("该数组最小元素为:"+a[m][n]);
    		System.out.println("该元素所在行为:"+(m+1));
    		System.out.println("该元素所在列为:"+(n+1));
    

    5.5

    	
    Scanner sc=new Scanner(System.in);	//exercises 5.5
    		int a[][],b[][];
    		int i,j,m,n;
    		System.out.println("请输入数组行数和列数:");
    		m=sc.nextInt();
    		n=sc.nextInt();
    		a=new int[m][n];
    		b=new int[n][m];
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				a[i][j]=GetRandomNum(10,99);
    			}
    		}
    		System.out.println("输出m行n列数组");
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				System.out.print(a[i][j]);
    				System.out.print('\t');
    			}
    			System.out.println("");
    		}
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				b[j][i]=a[i][j];
    			}
    		}
    		System.out.println("输出转化后n行m列数组");
    		for(i=0;i<b.length;i++)
    		{
    			for(j=0;j<b[i].length;j++)
    			{
    				System.out.print(b[i][j]);
    				System.out.print('\t');
    			}
    			System.out.println("");
    		}
    

    5.6

    		Scanner sc=new Scanner(System.in);	//exercises 5.6
    		int n,i,j,LeftDiagonal=1,RightDiagonal=1;
    		System.out.print("输入n ");
    		n=sc.nextInt();
    		int a[][]=new int[n][n];
    		for(i=0;i<a.length;i++)
    		{
    			for(j=0;j<a[i].length;j++)
    			{
    				a[i][j]=GetRandomNum(1,9);
    			}
    		}
    		for(i=0;i<a.length;i++)
    			{
    				for(j=0;j<a[i].length;j++)
    				{
    					System.out.print(a[i][j]);
    					System.out.print('\t');
    				}
    				System.out.println("");
    			}
    		for(i=0;i<a.length;i++)
    		{
    			LeftDiagonal*=a[i][i];
    			RightDiagonal*=a[i][a.length-1-i];
    		}
    		System.out.println("该数组主对角线之积为:"+LeftDiagonal);
    		System.out.println("该数组次对角线之积为:"+RightDiagonal);
    

    5.7

    		int[][][] t = new int[2][2][3];		//exercises 5.7
            for (int i = 0; i < t.length; i++) {
                for (int j = 0; j < t[i].length; j++) {
                    for (int k = 0; k < t[i][j].length; k++) {
                        t[i][j][k] =GetRandomNum(1,9);;
                    }
                }
            }
            for (int i = 0; i < t.length; i++) 
            {
                for (int j = 0; j < t[i].length; j++)
                {
                    System.out.println("t["+ i +"][" + j + "] = "+ Arrays.toString(t[i][j]));
                }
            }
    

    5.8

            int a[]=new int[10];		//exercises 5.8
            int i,min=0,max=0;
            for(i=0;i<a.length;i++)
            	a[i]=GetRandomNum(1,90);
            System.out.println("输出数组");
            for(int j:a) 
            {
            	System.out.print(j);
            	System.out.print('\t');
            }
            for(i=0;i<a.length;i++)
            {
            	if(a[min]>a[i]) min=i;
            	if(a[max]<a[i]) max=i;
            }
            System.out.println("");
            System.out.println("该数组中的最大值为:"+a[max]);
            System.out.println("该数组中的最小值为:"+a[min]);
            System.out.println("该数组中的最大值与最小值的差值为:"+(a[max]-a[min]));
    
    展开全文
  • Java2实用教程(第5)最新答案-耿祥义。2017年版本。希望对你有用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,866
精华内容 746
关键字:

java第五版课后题

java 订阅