您的位置:首页 > 编程语言 > Java开发

Java作业——权限综合实验 + 数组、字符串高级应用

2015-11-25 22:31 477 查看
这道题。。。没什么好说的,就正则表达式的东西吧,直接贴题目和代码()

实验4 权限综合实验 + 数组、字符串高级应用

【实验类型】:综合型

【实验目的】:

1) 熟悉和掌握包的作用;

2) 熟悉和掌握如何将类编译输出到特定的包中,如何导入包;

3) 熟悉并掌握包对类权限修饰的影响;

4) 熟悉并掌握自动装箱、自动拆箱机制的含义和使用方式;

5) 熟悉并掌握字符串的高级使用方式;如正则表达式的使用等;[自行查找资料自学]

6) 属性并掌握数组的高级使用方式,如相关算法的调用等;

【实验内容】:

本次实验包含如下两个小实验:

1) 实验a:旨在验证包及其成员的访问权限;

有A、B、A1、C等4个类,其中A、B在包P1中,A1、C在包P2,每个类都有全部四种权限的成员,且A1是A的子类。现要求设计程序,验证包和权限修饰的影响。注意:4个类也需要配被合适的类权限修饰。验证时注意编译出错信息,合法调用要注意给出调用成功信息。

2) 实验b:旨在验证装箱拆箱、字符串和数组的高级应用

a) 输入若干java语句,识别出其中合法的标识符,如,输入:

“a+1.2f-4d-d5”,则合法的标识符有:”a”、”d5”

b) 输入10个数值型计算表达式(如1+2-3.0f+2.1),识别并计算,之后输出排序后的结果。如输入:

10+2+3.0

5-2.0f+3.0

1+2+3

输出结果为:

1+2+3=6 int型

5-2.0f+3.0=6.0 double型

10+2+3.0=15 double型

【实验提示】:

a)对实验a,一定要注意为每一类都必须隶属于一个包,否则将产生无名包问题,处理起来很麻烦,并且可能影响对结果的判别;

b)对实验b,要充分例子String类中字符串分隔功能,分隔的依据可以是正则表达式,这实际上可看作是识别的依据。

实验a不贴了,权限修饰符问题而已。

实验b:

import java.util.ArrayList;

/**
* 正则表达式
* @author KevinWu
*
*/
public class A {

public static void main(String[] args) {
// TODO Auto-generated method stub
String testStr="$-a+1.2f-4d-d5";

//先分割字符串
String cutStr[]=testStr.split("[+-]");

for(int i=0;i<cutStr.length;i++){
String regex="[a-zA-Z$]{1}\\w*";//字母或$开头,后面的可以是数字或字母
if(cutStr[i].matches(regex))
System.out.println(cutStr[i]);
}
}

}


import java.util.Scanner;
/**
* 识别计算
* @author KevinWu
*
*/
public class B {

public static void main(String[] args) {
String s1 = null;
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
s1 = sc.next();
int sumi = 0;
double sumd = 0.0;
// 先确定有没有f
if (s1.split("f").length != 1
|| s1.substring(s1.length() - 1).equals("f")) {// 结果是double
// 分割出加数并相加
String p[] = s1.split("[+]");
for (int i = 0; i < p.length; i++) {
if (p[i].split("[-]").length == 1)
sumd += Double.valueOf(p[i]).doubleValue();
}
// 再分割出被减数
String d[] = s1.split("[-]");
for (int i = 0; i < d.length; i++) {
if (d[i].split("[+]").length == 1)
sumd -= Double.valueOf(d[i]).doubleValue();
}
System.out.println(s1 + "=" + sumd + " double型");
} else// 结果是int
{
String p[] = s1.split("[+]");
for (int i = 0; i < p.length; i++) {
if (p[i].split("[-]").length == 1)
sumi += Integer.valueOf(p[i]).intValue();
}
// 再分割出被减数
String d[] = s1.split("[-]");
for (int i = 0; i < d.length; i++) {
if (d[i].split("[+]").length == 1)
sumi -= Integer.valueOf(d[i]).intValue();
}
System.out.println(s1 + "=" + sumi + " int型");
}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: