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

来源:互联网 发布:vmware 设置网络 编辑:程序博客网 时间:2024/05/16 00:44

这道题。。。没什么好说的,就正则表达式的东西吧,直接贴题目和代码()

实验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型");            }        }    }}
0 0
原创粉丝点击