做完这些题,感觉压力很大,好多概念都模糊不清,还得继续努力。
- package com.itheima;
- import java.util.ArrayList;
- import java.util.Iterator;
- /**
- * 第2题:创建ArrayList对象,添加5个元素,使用Iterator遍历输出
- * @author 刘云祥
- *
- */
- public class Test2 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
-
- ArrayList<String> list= new ArrayList<String>();//创建 ArrayList 集合
-
- list.add(new String("第一个元素")); //向集合中添加元素
- list.add(new String("第二个元素"));
- list.add(new String("第三个元素"));
- list.add(new String("第四个元素"));
- list.add(new String("第五个元素"));
-
-
- Iterator<String> iterators = list.iterator();//获取 Iterator 对象
-
- while (iterators.hasNext()) //判断 ArrayList 集合中是否存在下一个元素
- {
- Object obj = iterators.next(); //取出 ArrayList 集合中的元素
- System.out.println(obj); //打印到控制台
-
- }
- }
- }
复制代码- package com.itheima;
- import java.util.Scanner;
- /**
- * 第3题:求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
- * @author 刘云祥
- *
- */
- public class Test3 {
- public static int fib(int n){ //创建一个 递归 方法
- if(n==1 || n==2) return 1; //递归出口
- if(n>2)
- return fib(n-2)+fib(n-1); //递归调用
- return -1;
- }
-
- public static void fibPrint() //创建一个 控制台 打印 方法
- {
- Scanner in=new Scanner(System.in);//扫描从控制台输入的字符
- System.out.print("请输入项数:");
- int n=in.nextInt(); //输入数字赋值给n
- if(n<30){
- System.out.println("斐波那契数列第"+n+"项为:"+fib(n));//调用 fib 方法 并打印 第n 项
- }
- else{
- System.out.println("请输入小于30的整数"); }
-
- in.close(); //关闭
- }
-
- public static void main(String[] args) {
- // TODO Auto-generated method
- fibPrint();//调用 fibPrint() 方法
- }
- }
复制代码- package com.itheima;
- /**
- * 第5题: 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
- * @author 刘云祥
- *
- */
- public class Test5 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int [] arr = {4,2,4,6,1,2,4,7,8};//创建并初始化数组
- for(int i = 0;i < Rmdistinct(arr).length; i++){//遍历数组
- System.out.print(Rmdistinct(arr)[i]+" ");//调用 并打印 数组去重复 后 的值
- }
- }
- public static int[] Rmdistinct(int[] arr){ //创建一个 方法 用以取出 数组中的重复 元素
- int length=1; //定义一个 int 型变量
- boolean Judgement=false; // 定义一个 布尔型 变量
- for(int i=1;i<arr.length;i++){ //对数组 进行 遍历
- for(int j=0;j<length;j++){ //对数组中的元素 进行 对比
- if(arr[i]==arr[j]){ //比较数组中 重复的元素
- Judgement=true;
- }
- }
-
- if(!Judgement){ //如果数组某一元素对比不重复 则 进入
- arr[length]=arr[i]; //替换元素为当前值
- length++; //长度自加一
- }
- Judgement=false; //复位变量值
- }
-
- int[] newArr=new int[length]; //创建一个整型数组
- System.arraycopy(arr, 0, newArr, 0, length); //复制指定长度数组
- return newArr; //返回新的数组元素
- }
- }
复制代码- package com.itheima;
- /**
- * 写出以下代码执行结果,分析为什么?(没有分析结果不得分)
- * public class Test {
- public static void main(String[] args) {
- String s = "abc";
- s.substring(1);
- s.replace("bc", "xyz");
- System.out.println(s);
- String value = new String ("abc");
- System.out.println(s == value);
- }
- }
- * 输出结果:
- * abc
- * false
- * 分析:
- *
- * 字符串是常量,一般是存放在字符串常量池中,一旦创建就无法改变,
- * 而且 s.substring(1);和 s.replace("bc", "xyz");
- * 只是对字符串 进行操作,却没有改变 s 中字符串
- *
- * Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
- * 一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配
- * 堆内存用于存放由new创建的对象和数组
- * ==操作比较的是两个变量的值是否相等,
- * 对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
- * 由于 s 与 value 所指向的存放 位置 不同 所以 地址 也不相同
- * @author 刘云祥
- *
- */
- public class Test6 {
- public static void main(String[] args) {
- String s = "abc";//栈中开辟一块空间存放引用s,s指向池中String常量"abc",
- s.substring(1);///从位置1处截取s字符串并返回,但是没有被变量接受。
- s.replace("bc", "xyz");//返回一个新的字符串,并用字符串“xyz”代替原字符串的“bc”,也没有被变量接受。
- System.out.println(s); //打印 输出
- String value = new String ("abc");// 栈中开辟一块空间存放引用value;
- //堆中开辟一块空间存放一个新建的String对象"abc";
- System.out.println(s == value);//打印s是否等于value
- }
- }
复制代码- package com.itheima;
- import java.util.Scanner;
- /**
- * 第9题: 写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,
- * 后面4位任意数字,最后5位为任意相同的数字。例如:18601088888、13912366666
- * @author 刘云祥
- *
- */
- public class Test9 {
- public static void main(String[] args) {
- String regex = "1[3|4|5|8]{1}[0-9]{4}(\\d{1})\\1{4}";
- System.out.println("输入需要匹配的号码");
- Scanner str = new Scanner(System.in);
- String s1 = str.next();
-
- char cchar[] = s1.toCharArray();
- String s2 = new String(cchar);
-
- if(s2.matches(regex)){
- System.out.println("匹配成功!");
- }
- else{
- System.out.println("匹配失败!");
- }
- str.close();
-
- }
- }
复制代码- package com.itheima;
- import java.net.*;
- import java.io.*;
- /**
- * 第10题:使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
- * 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- * @author 刘云祥
- * 先运行服务端
- */
- public class TestA //服务端
- {
- public static void main(String[] args) throws IOException
- {
-
- ServerSocket ss = new ServerSocket(30000);//创建一个ServerSocket,用于监听客户端Socket的连接请求
- Socket s = ss.accept();//取得连接的Socket对象
- BufferedReader server_buf=new BufferedReader(new InputStreamReader(s.getInputStream()));//输入流
- String str=server_buf.readLine();
- System.out.println("服务端接受到字符串为:");
- System.out.println(str);
- PrintStream pri=new PrintStream(s.getOutputStream());//对输出流进行 包装
- System.out.println("将字符串反转后发送给客户端...");
- pri.println(new StringBuffer(str).reverse());
- //关闭输出流
- pri.close();
- s.close();
- ss.close();
- }
- }
复制代码- package com.itheima;
- import java.net.*;
- import java.util.Scanner;
- import java.io.*;
- /**
- * 第10题:使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
- * 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- * @author 刘云祥
- * 先运行服务端
- */
- public class TestA1 //客户端
- {
- public static void main(String[] args) throws IOException
- {
- Socket socket = new Socket(InetAddress.getLocalHost(), 30000);//创建一个ServerSocket,
- BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream()));//输入流
- PrintStream pri=new PrintStream(socket.getOutputStream());//输出
- Scanner sc=new Scanner(System.in);
- System.out.println("请输入一个字符串:");
- String str=sc.nextLine();
- System.out.println("正在向服务器发送字符串...");
- pri.println(str);
- System.out.println("接受来自服务器反转的字符串...");
- System.out.println(br.readLine());
- //关闭
- sc.close();
- br.close();
- socket.close();
- }
- }
复制代码
|
|