Java API
[实验任务1] 图书价格汇总
[任务介绍]
1. 任务描述
假设某图书馆中图书记录的格式为“Java程序设计: 34.5;Web程序设计: 56.5;JSP程序设计:20.5”(每本书的价格是小数,每本书的价格与下一本书的名字之间有一个中文;)。
编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。
2. 运行结果
[任务目标]
- 学会分析“图书价格汇总”任务的实现思路;
- 根据思路独立完成“图书价格汇总”的源代码编写、编译和运行;
- 掌握String类和StringTokenizer类中常用方法的使用。
[实现思路]
- 用nextLine输入一串字符串
- 提取字符串中的数字:replaceAll对字符串中非数字、“.”([^0-9.])的字符转化成“;”
- 提取字符串中非数字信息:replaceAll对字符串中数字、“.”和“元”([0-9.元])的字符转化成“;”
- 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. 运行结果
[任务目标]
- 学会分析“去除字符串中数字字符逆序输出”任务的实现思路;
- 根据思路独立完成“去除字符串中数字字符逆序输出”的源代码编写、编译和运行;
- 掌握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. 运行结果
[任务目标]
- 学会分析“算术运算模拟”任务的实现思路;
- 根据思路独立完成“算术运算模拟”的源代码编写、编译和运行;
- 掌握Scanner类中常用方法的使用;
- 掌握String和StringTokenizer类中常用方法的使用;
- 掌握包装类中常用方法的使用。
[实现思路]
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;
}
}
}
}
运行结果如下: