字符串处理及基础类库

更新时间:2024-03-10 19:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验六 字符串处理及基础类库

实验学时:2 实验类型:验证性 一、实验目的

1.理解并掌握String类、StringBuffer类、StringTokenizer类等,特别注意掌握字符串与变量之间的转换。

2.了解java提供的常用类包,主要有系统类、包装类、数学类、日历类、随机类等,充分利用java资源,使编程更加快捷有效。。

3.掌握Java Application命令行参数的使用。 二、实验要求

1.理解并掌握String类、StringBuffer类、StringTokenizer类等,特别注意掌握字符串与变量之间的转换。

2.了解常用类包有何用途,实验用到哪些常用类? 三、实验步骤 (一)字符串操作练习

1. String类的常见方法及与其他数据类型的转换练习。 public class StringTest{ public static void main(String [] args) { String s=\ System.out.println(s); System.out.println(\ System.out.println(\ System.out.println(\ String alphabet=\ System.out.println(alphabet); System.out.println(\ System.out.println(\ System.out.println(\ String sbis=\

}

System.out.println(sbis);

String sbislc=sbis.toLowerCase(); System.out.println(sbislc);

String sbisup=sbis.toUpperCase(); System.out.println(sbisup); String first=\String last=\

System.out.println(first+last); System.out.println(first+\

String str=\System.out.println(str); int i=str.indexOf('s');

System.out.println(\int j=str.indexOf('s',i+1);

System.out.println(\int k=str.indexOf('s',j+1);

System.out.println(\ k=str.lastIndexOf('s');

System.out.println(\System.out.println(str.substring(k)); String inventor=\System.out.println(inventor);

System.out.println(inventor.replace('B','C')); System.out.println(inventor); int n=44;

System.out.println(\String strn=String.valueOf(n); System.out.println(\ String today=\

String todaysDayString=today.substring(4,6);

int todaysDayInt=Integer.parseInt(todaysDayString); int nextWeeksDayInt=todaysDayInt+7;

String nextWeek=today.substring(0,4)+nextWeeksDayInt+today.substring(6); System.out.println(\

System.out.println(\

System.out.println(\System.out.println(\}

2

2.StringBuffer类练习 //StringBufferDemo.java import java.applet.Applet; import java.awt.Graphics;

public class StringBufferDemo extends Applet { public void paint(Graphics g) {

String str=\这是一个字符串——This is a test string\ g.drawString(\正常字符串:\

g.drawString(\翻转字符串:\ }

public String reverse(String s) { int len=s.length();

StringBuffer buffer=new StringBuffer(len); for (int i=len-1; i>=0; i--) buffer.append(s.charAt(i)); return buffer.toString(); } }

编译以上文件,并编写同名页面文件StringBufferDemo.html,内容如下:

在浏览器打开StringBufferDemo.html文件,观察运行结果。

3

(二)基础类库练习

1.日期和时间相关

(1)自定义一个类Time,实现显示当前日期和时间的功能

import java.util.Calendar; class Time { private Calendar t; private int y, m, d, hh, mm, ss;

4

}

Time (){ t=Calendar.getInstance(); y=t.get(t.YEAR); m=t.get(t.MONTH)+1; d=t.get(t.DATE); hh=t.get(t.HOUR_OF_DAY); mm=t.get(t.MINUTE); ss=t.get(t.SECOND); }

public String getDate() { return y+\年\月\日\}

public String getTime() { String s=hh+\时\分\秒\ return s; }

public static void main(String args[]){ Time t=new Time(); System.out.println(\当前日期:\ System.out.println(\当前时间:\}

(2)import java.util.*;

class HelloWorld { public static void main(String args[]){ Date date1=new Date(); String temp=date1.toString(); temp=temp.substring(11,temp.indexOf('C')); System.out.println(temp);

5

double sum=0.0; for(int i=0;i<=10000000;i++){ sum+=i; } System.out.println(\ Date date2=new Date(); temp=date2.toString(); temp=temp.substring(11,temp.indexOf('C')); System.out.println(\现在时间是:\ System.out.println(\ System.out.println(\ System.out.println(\ System.out.println(\

年:\ System.out.println(\月:\ System.out.println(\月:\ System.out.println(\日:\ System.out.println(\小时数:\ System.out.println(\分钟数:\ System.out.println(\秒数:\ } }

2.Vector类

import java.util.*;

public class MyVectorextendsVector{ public MyVector(){ super(1, 1); // 指定 capacity 和 capacityIncrement 取值 } public void addInt(int i){

6

}

addElement(new Integer(i)); } public void addFloat(float f){ addElement(new Float(f)); } public void addString(String s){ addElement(s); } public void addCharArray(char a[]){ addElement(a); } public void printVector(){ Object o; int length = size(); // 同capacity相比较 System.out.println(\ for (int i = 0; i < length; i++){ o = elementAt(i); if (o instanceof char[]){ //System.out.println(o); 不好 System.out.println(String.copyValueOf((char[]) o)); } else System.out.println(o.toString()); } } public static void main (String args[]){ MyVector v = new MyVector(); int digit = 5; float real = 3.14f; char letters[] = {'a', 'b', 'c', 'd'}; String s = new String (\ v.addInt(digit); v.addFloat(real); v.addString(s); v.addCharArray(letters); v.printVector(); }

7

3.系统常用类包的使用。

该程序对所有常用包和一些方法进行了测试;主要理解字符串与变量之间的转换。

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

class CommonClassesTest

{ public static void main(String args[]) throws Exception {//System系统类

System.out.println(\系统类-------\ char c; int cc;

System.out.println(\请输入一个字符\ cc=c=(char)System.in.read();

System.out.println(\您输入的字符是:\

System.out.println(\您输入的值是:\

System.out.println(\版本是:\System.out.println(\是:\

//lang语言类,创建数据类型对象

Integer I1=new Integer(100); Float F1=new Float(3.14159); double d1=Math.E;

Double D1=new Double(d1); //数据类型对象转换成数值变量

System.out.println(\数据类型对象转换成数值变量----\ int i1=I1.intValue(); float f1=F1.floatValue(); d1=D1.doubleValue();

System.out.println(\

8

System.out.println(\ System.out.println(\

//数据对象转换成数值字符串对象

System.out.println(\数据对象转换成数值字符串对象----\ String sI1=I1.toString(); String sF1=F1.toString(); String sD1=D1.toString();

System.out.println(\ System.out.println(\ System.out.println(\ //字符串的常用方法

System.out.println(\字符串的常用方法-----------\ System.out.println(\

System.out.println(\ System.out.println(\

//应用数据对象的toString()将数值或变量直接转换成数值字符串对象 System.out.println(\用toString()将数值或变量直接转换成数值字符串对象------\

int a=1234;

sI1=Integer.toString(a);

sF1=Float.toString((float)Math.PI);

sD1=Double.toString(Math.asin(0.5)*180/Math.PI);

System.out.println(\ System.out.println(\ System.out.println(\

//应用字符串对象的valueOf()将数值或变量直接转换成数值字符串对象

System.out.println(\用valueOf()将数值或变量直接转换成数值字符串对象---\

a=4321;

sI1=String.valueOf(a);

sF1=String.valueOf((float)Math.E);

sD1=String.valueOf(Math.asin(0.5)*180/Math.PI);

System.out.println(\ System.out.println(\ System.out.println(\

//将字符串转成数据对象再转成数值变量

System.out.println(\将字符串转成数据对象再转成数值变量---\ I1=Integer.valueOf(sI1); //转成数据对象 i1=I1.intValue(); //再转成变量

f1=Float.valueOf(sF1).floatValue();//两步合起来

9

d1=Double.valueOf(sD1).doubleValue();

int i2=Integer.parseInt(\对整形数值串更简便

System.out.println(\转成变量i1=\ System.out.println(\转成变量f1=\ System.out.println(\转成变量d1=\ System.out.println(\直接转i2=\

//日历类与随机类

System.out.println(\日历与随机类----------\ Calendar now=Calendar.getInstance(); int year=now.get(Calendar.YEAR);

int month=now.get (Calendar.MONTH)+1; int date=now.get(Calendar.DATE);

System.out.println(\今天是\年\月\日\

int aaa;

int b1=0,b2=0,b3=0; for(int i=0;i<30;i++)

{aaa=new Random().nextInt(3)+1; //产生1-3的随机数 System.out.println(\

if (aaa==1) b1++; if (aaa==2) b2++; if (aaa==3) b3++; }

System.out.println(\的个数=\的个数=\的个数=\

} }

【思考问题】

10

① 将数据或变量转成字符串有那些方法? 数值转换为字符串

public static String valueOf(Object obj)//obj可以是任何类型的数值型变量。 ② 将数值型字符串转成数值变量有哪些步骤和方法。

1.字符串转换为数值 (1) 字符串转换为整数

public static int parseInt(String s, int radix)//s是需要转换的字符串,radix是转换后用什么进制表示,如10就是十进制,16就是十六进制。

(2) 字符串转换为浮点数

public static float parseFloat(String s)//s是需要转换的字符串 2.数值转换为字符串

public static String valueOf(Object obj)//obj可以是任何类型的数值型变量。

③ 注释掉main函数后面的throws Exception编译会发生什么错误?怎样处理使错误消失?

将上述注释的代码恢复即可。 ④ 修改程序完成下面的要求:

? 从日历对象中读取当前的时、分、秒。

? 产生0~±10间的随机数。

4.main方法参数的使用。

进一步了解数值型字符串转换成数值变量的必要性和应用。该题通过从命令行输入两个整形数,在程序中计算两个数之积。

package maintest;

public class MainParaDemo

{public static void main(String args[])

11

{ int w=Integer.valueOf(args[0]).intValue(); int h=Integer.valueOf(args[1]).intValue(); System.out.println(\两个数之积是:\ } }

【思考问题】如何在执行程序时输入所要求的参数?

? 用JDK。经工作路径转到程序包maintest所在文件夹:

输入命令java MainParaDemo 40 30 运行结果:两个数之积:1200 截图如下:

? 用Eclipse。工程配置要进行修改。在源文件编辑界面通过Run As→ Run

Configurations?进入图6-1所示界面。点击第二个选项卡(Arguments),在“program arguments”中输入所需参数,如图所示。注意参数间是一个空格。

12

?

?

13

?

?

14

(四)编程练习与设计

1. 设给定一组整型数组,求它们的平均值及最大值 代码为:

import java.util.Scanner;

public class Average { }

public static void main(String[] args) { }

// TODO Auto-generated method stub

Scanner keyboard = new Scanner(System.in); System.out.println(\输入数组的长度:\); int n=keyboard.nextInt(); int[] c = new int[n];

System.out.println(\输入数组的元素为:\); for(int i=0;i

double avg; double sum=0;

int maxofn = Integer.MIN_VALUE; for(int i=0;i

avg = sum/n;

System.out.println(\输出该数组的平均值:\+avg);

System.out.println(\该数组的最大值为:\+maxofn); sum+=c[i]; if( c[i]>maxofn){

maxofn = c[i];

c[i] = keyboard.nextInt();

15

2. 创建一个Vector 对象v,先通过键盘为args[]输入两个分量,然后赋值给对象v,并通过直接方式为其分量赋值。 实验代码为:

import java.util.Vector; import java.util.Scanner; public class MyVector {

public static void main(String[] args) {

// TODO Auto-generated method stub Vector v=new Vector(1,1); args=new String[2];

Scanner keyboard = new Scanner(System.in); System.out.print(\输入第一个分量:\);

args[0]=keyboard.next();

System.out.print(\输入第二个分量:\); args[1]=keyboard.next(); v.addElement(args[0]); v.addElement(args[1]); v.addElement(\); v.addElement(\);

System.out.println(\向量为:\+v); v.setElementAt(\,3);

System.out.println(\向量为: \+v);

System.out.println( \向量元素的个数为:\+v.size()); System.out.println(\孟千\); } }

16

3.编写一个java程序,完成以下功能:

(1) 声明一个名为s的字符串,并使它的内容为”Call me Ishmael.”; (2) 打印整个字符串

(3) 使用length()方法打印字符串的长度 (4) 使用charAt()方法打印字符串的第一个字符

(5) 使用charAt()和length()方法打印字符串的最后一个字符 (6) 使用indexOf()方法和substring()方法打印字符串中的第一个单词 实验代码为

public class Ex4_3 { }

public static void main(String[] args) {

// TODO Auto-generated method stub String s = \; System.out.println(s);

System.out.println(\字符串的长度为:\+s.length());

System.out.println(\字符串的第一个字符为:\+s.charAt(0));

System.out.println(\字符串的最后一个字符为:\+s.charAt(s.length()-1)); int n = s.indexOf(\);

System.out.println(\字符串中的第一个单词为:\+s.substring(0, n)); System.out.println(\孟千\); }

17

4. 使用Math类编写一个完整的程序。 实验代码如下:

public class Math {

/**

* @param args */

public static void main(String[] args) {

// TODO Auto-generated method stub

//abs(arg):返回arg绝对值,arg可以是:int,long,float,double. double a = java.lang.Math.abs(-186.7); System.out.println(a);

//ceil(double arg):返回>=arg的最小整数. double b = java.lang.Math.ceil(79.3); System.out.println(b);

//floor(double arg):返回<=arg最大整数. double c = java.lang.Math.floor(30.9); System.out.println(c);

//max(x,y):返回x和y中的最大值.

double d = java.lang.Math.max(a,b); System.out.println(d);

//min(x,y):返回x和y中的最小值.

double e = java.lang.Math.min(b,c); System.out.println(e);

//rint(double arg):返回最接近arg的整数值. 返回double double f = java.lang.Math.rint(50.6); System.out.println(f);

//round(arg):返回最接近arg的整数值.arg为double时返回long,为float时

返回int

18

double g = java.lang.Math.round(20.18); System.out.println(g);

//返回一个介于0与1之间的伪随机数.大多数情况下适应Random类产生随机数. double h = java.lang.Math.random(); System.out.println(h);

//sqrt(double arg):计算参数的平方根.返回类型为double型 double i = java.lang.Math.sqrt(80); System.out.println(i);

//pow(double arg1,bouble arg2):计算arg1为底arg2为指数的幂返回类型为

double型 double j = java.lang.Math.pow(3,4);

}

System.out.println(j);

}

四、思考问题

1.如何快速学习并使用各种类的API。 五:实验体会

通过本次上机实验,理解并掌握String类、StringBuffer类、StringTokenizer类等,特别注意掌握字符串与变量之间的转换。也明白数值型字符串转成数值变量

有哪些步骤和方法。另一方面了解java提供的常用类包,主要有系统类、包装类、

数学类、日历类、随机类等,充分利用java资源,使编程更加快捷有效。从而以更高效的完成编程,掌握Java Application命令行参数的使用,自己对编程有了新的认识,也更加熟练。

19

20

本文来源:https://www.bwwdw.com/article/2c98.html

Top