Java基础实验六

本文档展示了三个Java编程实验任务,包括从字符串中提取图书价格并求和,移除数字字符并逆序输出字符串,以及模拟算术运算。实验涉及String、StringTokenizer和Scanner等类的使用,以及异常处理和表达式计算。
摘要由CSDN通过智能技术生成

Java API

[实验任务1] 图书价格汇总

[任务介绍]

        1. 任务描述

        假设某图书馆中图书记录的格式为“Java程序设计: 34.5;Web程序设计: 56.5;JSP程序设计:20.5”(每本书的价格是小数,每本书的价格与下一本书的名字之间有一个中文;)。

        编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。

        2. 运行结果

[任务目标]

  1. 学会分析“图书价格汇总”任务的实现思路;
  2. 根据思路独立完成“图书价格汇总”的源代码编写、编译和运行;
  3. 掌握String类和StringTokenizer类中常用方法的使用。

[实现思路]

  1. 用nextLine输入一串字符串
  2. 提取字符串中的数字:replaceAll对字符串中非数字、“.”([^0-9.])的字符转化成“;”
  3. 提取字符串中非数字信息:replaceAll对字符串中数字、“.”和“元”([0-9.元])的字符转化成“;”
  4. StringTokenizer类对转化后的字符串进行分析,将非“;”的字符提取出来,然后使用nextToken()方法逐个获取需要的字符或值。 

[实现代码及运行结果]

实现代码如下: 

package b;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		String a=reader.nextLine();
		String a1=a.replaceAll("[^0-9.元]",";");
		StringTokenizer b1=new StringTokenizer(a1,";");
		String a2=a.replaceAll("[0-9.元]",";");
		StringTokenizer b2=new StringTokenizer(a2,";");
		double sum=0;
		while (b1.hasMoreTokens()){
			String c1=b1.nextToken();
			String c2=b2.nextToken();
			double price=Double.parseDouble(c1);
			System.out.println(c2+price);
			sum+=price;
		}
		System.out.println("总价格为"+sum);
	}

运行结果如下: 

[实验任务2] 去除字符串中数字字符逆序输出

[任务介绍]

        1. 任务描述

        给定一行字符串(如:He11ll00d323o  w1232154304343or8ld!),去除其中的数字字符,并逆序输出(!dlrow  odlleH)。

        2. 运行结果

[任务目标]

  1. 学会分析“去除字符串中数字字符逆序输出”任务的实现思路;
  2. 根据思路独立完成“去除字符串中数字字符逆序输出”的源代码编写、编译和运行;
  3. 掌握String类和StringBuffer类中常用方法的使用。

[实现思路]

1、用nextLine输入一串字符串

2、去除字符串的数字:replaceAll对字符串中数字([0-9.元])的字符转化成“ ”

3、定义一个StringBuffer类

4、对StringBuffer对象使用reverse()方法将对应字符串序列进行翻转。

[实现代码及运行结果]

 实现代码如下:

package b;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		String a=reader.nextLine();
		String a1=a.replaceAll("[0-9]","");
		StringBuffer A=new StringBuffer(a1);
		System.out.print(A.reverse());
	}
}

运行结果如下: 

 

[实验任务3]算术运算模拟

[任务介绍]

        1. 任务描述

        该程序是对“+、-、*、/”四种简单运算的模拟,在命令行输入类似“1+ 2”的三个参数,即一个运算符和两个操作数,若参数个数多于或少于3个,程序会出错提示;若参数个数为3,但运算符不是+、-、*、/中的一个,程序也会出现错误提示;在进行除法运算时,若被除数为0,程序也会出现错误提示。

        2. 运行结果

[任务目标]

  1. 学会分析“算术运算模拟”任务的实现思路;
  2. 根据思路独立完成“算术运算模拟”的源代码编写、编译和运行;
  3. 掌握Scanner类中常用方法的使用;
  4. 掌握String和StringTokenizer类中常用方法的使用;
  5. 掌握包装类中常用方法的使用。

[实现思路]

1、用nextLine输入字符串

2、用eval()函数计算输入的结果

3、try、catch判断结果是否异常

[实现代码及运行结果]

实现代码如下:

 

package b;
import java.util.Scanner;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner reader=new Scanner(System.in);
		ScriptEngineManager manager=new ScriptEngineManager();
		ScriptEngine se=manager.getEngineByName("js");
		String a;
		while (true){
			try{
				System.out.print("请输入运算式:");
				a=reader.nextLine();
				Number result=(Number)se.eval(a);
				System.out.println(result);
			}
			catch(Exception e){
				System.out.println("输入非法!");
				continue;
			}
		}
	}
}

 运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值