Java实验(1)

【实验内容】
1、(StringFunc.java)已知一个字符串s为“扁担长,板凳宽,板凳没有扁担长,扁担没有板凳宽。扁担要绑在板凳上,板凳偏不让扁担绑在板凳上。”,使用以下字符串函数完成任务并显示出来:
(1)用substring取出s中第一个“板凳宽”并显示出来。
(2)用indexOf()找出s中“扁担”出现的所有位置。
(3)用字符串运算+形成包含重复10000次字符串s的长字符串,输出计算时间和总长度。
(4)用StringBuilder形成上面的长字符串,输出计算时间和总长度。
提示:long time= System.currentTimeMillis()
//取得当前时间的毫秒数(距离新纪元时间1970年1月1日0时0分0秒的毫秒数)。
代码如下:

public class StringFunc{
    final static String s="扁担长,板凳宽,板凳没有扁担长,扁担没有板凳宽。扁担要绑在板凳上,板凳偏不让扁担绑在板凳上。";
    public static void main(String args[]){
        String s1=s.substring(4,7);
        System.out.println(s1);

        int startindex=0;
        String target="扁担";
        while(true){
            startindex=s.indexOf(target,startindex);
            if(startindex==-1)
                break;
            System.out.print(startindex+" ");
            startindex=startindex+target.length();
        }
        System.out.println("");

        long time= System.currentTimeMillis(); 
        String s2="";
        for(int i=0;i<10000;i++)
            s2+=s;
        int length1=s2.length();
        long time1= System.currentTimeMillis();
        System.out.print("字符串相加的时间:");
        System.out.print(time1-time);
        System.out.print("ms "+"字符串长度:");
        System.out.println(length1);

        long time2= System.currentTimeMillis(); 
        StringBuilder s3=new StringBuilder(s);
        for(int i=0;i<9999;i++){
            s3.append(s);
        }
        long time3= System.currentTimeMillis();
        String s31=s3.toString();
        System.out.print("StringBuilder的时间:");
        System.out.print(time3-time2);
        System.out.print("ms "+"字符串长度:");
        System.out.println(s31.length());
    }
}

2、(Fib.java)斐波那契数列(Fibonacci sequence):第0项是0,第1项是1,从第2项开始,每一项都等于前两项之和,结果是0,1,1,2,3,5,8,13,21,34,55,89,144,233,…。其中,0为第0个斐波那契数。
(1)计算斐波那契数列保存在一个ArrayList类型的变量fibs中,要求一直计算到Long类型的最大斐波那契数。显示最后一个数和fibs的长度。
*最大长整数为Long.MAX_VALUE
(2) 用Iterator类依次取出fibs中每个元素,计算它与前面一个元素的比值(从第2个开始),保存在double类型的动态数组ratio中,然后把ratios中的所有元素值用foreach语句依次显示出来。可以看出这个值逐渐接近黄金分割比例0.6180339887 4989484820 458683436565。

import java.util.*;

public class Fib{
    public static void main(String args[]){
        long fib0 = 0,fib1 = 1,fib2 = 1;
        ArrayList<Long> fib = new ArrayList<Long>();
        int count=2;
        long fib_0=0;
        fib.add(fib0); fib.add(fib1);fib.add(fib2);
        while(fib.get(count)>0){
            count++;
            fib_0 = fib.get(count-1)+fib.get(count-2);
            fib.add(fib_0);
        }
        System.out.print(fib.get(count-1));
        System.out.print(" count: ");
        System.out.println(count);

        double sum[]=new double[3];
        int num=0;
        Iterator<Long> it = fib.iterator();
        long fib_1=it.next();
        while(it.hasNext()){
            if(num==3){
                for(int i=0;i<3;i++){
                    System.out.print(sum[i]);
                    System.out.print("     ");
                }
                System.out.print('\n');
                num=0;
            }
            long fib_2=it.next();
            double result=(double)fib_1/(double)fib_2;
            fib_1=fib_2;

            sum[num]=result;
            num++;

        }
    }

}

3、(ShowTags.java)找出html文件(grassland.htm)中的所有标签名(转换为大写字母),并用HashMap保存每个标签出现的次数,最后把所有标签及其出现次数显示出来。
* 要求使用content.charAt(index)依次取出字符(char类型)进行判断。char类型采用“==”进行比较。
* 可能会取到注释和脚本中的标签。
* 不要使用正则表达式
网页链接:(grassland.htm就是该网页源码)
http://travel.sohu.com/20161023/n471039505.shtml?pvid=725adae4dbd11180

import java.io.*;
import java.util.*;

class ShowTags{
  public static void main(String[] args)throws IOException{
    String content = readFile(".\\grassland.htm");
    int len = content.length();
    int begin=0,end=0;
    int value=0;
    String s="";
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    for(int i=0;i<len;i++){
        if((content.charAt(i)=='<')&&(content.charAt(i+1)!='!')){
            begin=i;
            for(int j=i+1;j<len;j++){
                if(content.charAt(j)=='>'){
                    i=j;
                    end=j;
                    s=content.substring(begin,end+1);
                    s=s.toUpperCase();
                    break;
                }
                else if(content.charAt(j)==' '){
                    i=j;
                    end=j;
                    s=content.substring(begin,end)+'>';
                    s=s.toUpperCase();
                    break;
                }
            }
            int flag=0;
            Iterator<String>it = map.keySet().iterator();
            while(it.hasNext()){
                String key = (String)it.next();
                if(s.equals(key)){
                    value = map.get(key);
                    map.put(s,value+1);
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                map.put(s,1);
            }
        }           
    }
    int num=0;
    Iterator<String>it = map.keySet().iterator();
    while(it.hasNext()){
        String key = (String)it.next();
        int value1 = map.get(key);
        num++;
        if(num==3){
            num=0;
            System.out.println(key+":"+value1);
        }
        else
            System.out.print(key+":"+value1+"   ");
    }
  }

  static String readFile(String fileName) throws IOException{
        StringBuilder sb = new StringBuilder("");
    int c1;
    FileInputStream f1= new FileInputStream(fileName);      
    InputStreamReader in = new InputStreamReader(f1, "UTF-8");

    while ((c1 = in.read()) != -1) {
      sb.append((char) c1);
    }        
        return sb.toString();
  }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高级Java实验指导书是一本详细介绍高级Java实验内容和要求的指南,旨在指导学生在高级Java课程中进行实验项目的设计和开发。 该指导书通常会包含以下几个方面的内容: 1. 实验目的和背景:简要介绍实验的目的和背景,使学生能够理解实验的重要性和意义。 2. 实验任务和要求:明确实验的任务和要求,即学生需要完成的具体内容和功能。这些要求可以是设计和开发一个特定的应用程序,或者是解决一个复杂的编程问题。 3. 实验步骤和流程:提供一步一步的实验步骤和流程,引导学生按照指定的流程进行实验,确保学生能够按照正确的顺序进行实验,并且不会遗漏任何关键步骤。 4. 实验环境和工具:介绍学生需要准备的实验环境和所需的开发工具,例如Java开发工具包(JDK)、集成开发环境(IDE)等。 5. 实验评分标准:明确实验的评分标准,即学生在完成实验时需要考虑的各个方面,例如功能的完整性、代码的质量和可读性、实现的效率等。 6. 实验报告要求:说明学生需要提交的实验报告的要求和格式,例如实验设计的描述、实现方案的说明、代码的解释和分析、实验结果的展示等。 通过高级Java实验指导书,学生能够全面了解实验的目标和要求,并按照指导书提供的步骤和流程进行实验。同时,指导书也提供了参考资料和实验提示,帮助学生解决遇到的问题和困难。 总之,高级Java实验指导书对于学生顺利完成高级Java实验项目起着重要的指导作用,能够提供全面的指导和帮助,使学生能够更好地掌握高级Java编程技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值