求大神帮我解决这道JAVA题 很繁琐啊

四.如下程序打印煤气公司每月每用户的账单。内部类USER刻划一个用户。USER型数组users’保存所有用户,String型数组bills保存当月所有用户的账单。Stri... 四. 如下程序打印煤气公司每月每用户的账单。
内部类USER刻划一个用户。
USER型数组users’保存所有用户,String型数组bills保存当月所有用户的账单。
String tmplt1和tmplt2保存账单模板,分别被两个等价的产生账单的方法是用。以tmplt1为例,解释模板,U将用具体的用户名替换,Y,M,P,T,N,Y,R依次用月份,使用煤气数,煤气单价,总计金额,制表年月日代替。
"尊敬的U用户:你Y月煤气使用M立方米,单价P元/立方米,总计T元。N-Y—R";
方法create_bills1和create_bills2都使用replace方法用具体数值代替模板中的参数。读懂这个程序,然后定义几个小的模板,写方法create_bills3,它使用连接的办法,把几个小模板和具体数据连接成账单。

public class Gas
{
public class USER//内部类
{
String name;//用户姓名
int m3;//使用煤气的立方米数
String account;//用户账号
//构造函数
public USER(String n,String a){name=n;account=a;}
}

USER[] users=new USER[1000000];//所有用户
StringBuffer[] bills=new StringBuffer[1000000];//所有用户的账单
//账单模板
String tmplt1="尊敬的U用户:你Y月煤气使用M立方米,单价P元/立方米,总计T元。N-Y—R";
String tmplt2="尊敬的U用户:你Y月煤气使用M立方米,单价P元/立方米,总计T元。R";
int count;//所有用户数
static int price;//煤气单价
//构造函数
public Gas(int p){price=p;count=0;}
//输入一个用户
public void input_user(String n,String a)
{
users[count++]=new USER(n,a);
}
//输入用户煤气立方米数
public void input_m3(int i,int m)
{
users[i].m3=m;
}
//用于定位模板中要被替换数据的下标
static int[] pos=new int[]{3,8,14,21,30,33,35,37};
static final int U=3,Y=8,M=14,P=21,T=30,R=33;
//第一个填写账单的方法
void create_bills1(int n,int y,int r)
{
StringBuffer b;
for(int i=0;i<count;i++)
{
b=new StringBuffer(tmplt1);
b.replace(37,38,r+"");
b.replace(35,36,y+"");
b.replace(33,34,n+"");
b.replace(30,31,price*users[i].m3+"");
b.replace(21,22,price+"");
b.replace(14,15,users[i].m3+"");
b.replace(8,9,(y-1)+"");
b.replace(3,4,users[i].name+"");
bills[i]=b;
}
}
//第二个填写账单的方法,使用常量定位
void create_bills2(int n,int y,int r)
{
StringBuffer b;
String nyr=n+"-"+y+"-"+r;
for(int i=0;i<count;i++)
{
b=new StringBuffer(tmplt2);
b.replace(R,R+1,nyr);
b.replace(T,T+1,price*users[i].m3+"");
b.replace(P,P+1,price+"");
b.replace(M,M+1,users[i].m3+"");
b.replace(Y,Y+1,(y-1)+"");
b.replace(U,U+1,users[i].name+"");
bills[i]=b;
}
}
//打印账单
public void print_bills()
{
for(int i=0;i<count;i++)
System.out.println(bills[i]);
}
public static void main(String[]args)
{
Gas g=new Gas(12);
//输入三个用户
g.input_user("aaa", "123");
g.input_user("bbb", "124");
g.input_user("ccc", "125");
//输入煤气用量
g.input_m3(0, 100);
g.input_m3(1, 150);
g.input_m3(2, 200);
//生成账单
g.create_bills2(2012, 4, 12);
//打印账单
g.print_bills();
}
}
展开
 我来答
用飘柔洗脚丫
2012-04-17 · TA获得超过248个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:203万
展开全部
//第三种填写账单的方法,连接
void create_bills3(int n,int y,int r)
{
StringBuffer b;
String nyr=n+"-"+y+"-"+r;
for(int i=0;i<count;i++)
{
b=new StringBuffer("");
b.append("尊敬的").append(users[i].name).append("用户:");
b.append("你").append((y-1)).append("月煤气使用").append(users[i].m3).append("立方米,");
b.append("单价").append(price).append("元/立方米,");
b.append("总计").append(price*users[i].m3).append("元。").append(nyr);
bills[i]=b;
}
}

public static void main(String[]args)
{
Gas g=new Gas(12);
//输入三个用户
g.input_user("aaa", "123");
g.input_user("bbb", "124");
g.input_user("ccc", "125");
//输入煤气用量
g.input_m3(0, 100);
g.input_m3(1, 150);
g.input_m3(2, 200);
//生成账单
g.create_bills3(2012, 4, 12);
//打印账单
g.print_bills();
}
伊人情绪
2012-04-17
知道答主
回答量:14
采纳率:0%
帮助的人:9.9万
展开全部
public class Gas
{
public class USER//内部类
{
String name;//用户姓名
int m3;//使用煤气的立方米数
String account;//用户账号
//构造函数
public USER(String n,String a){name=n;account=a;}
}

USER[] users=new USER[1000000];//所有用户
StringBuffer[] bills=new StringBuffer[1000000];//所有用户的账单
//账单模板
String tmplt1="尊敬的U用户:你Y月煤气使用M立方米,单价P元/立方米,总计T元。N-Y—R";
String tmplt2="尊敬的U用户:你Y月煤气使用M立方米,单价P元/立方米,总计T元。R";
int count;//所有用户数
static int price;//煤气单价
//构造函数
public Gas(int p){price=p;count=0;}
//输入一个用户
public void input_user(String n,String a)
{
users[count++]=new USER(n,a);
}
//输入用户煤气立方米数
public void input_m3(int i,int m)
{
users[i].m3=m;
}
//用于定位模板中要被替换数据的下标
static int[] pos=new int[]{3,8,14,21,30,33,35,37};
static final int U=3,Y=8,M=14,P=21,T=30,R=33;
//第一个填写账单的方法
void create_bills1(int n,int y,int r)
{
StringBuffer b;
for(int i=0;i<count;i++)
{
b=new StringBuffer(tmplt1);
b.replace(37,38,r+"");
b.replace(35,36,y+"");
b.replace(33,34,n+"");
b.replace(30,31,price*users[i].m3+"");
b.replace(21,22,price+"");
b.replace(14,15,users[i].m3+"");
b.replace(8,9,(y-1)+"");
b.replace(3,4,users[i].name+"");
bills[i]=b;
}
}
//第二个填写账单的方法,使用常量定位
void create_bills2(int n,int y,int r)
{
StringBuffer b;
String nyr=n+"-"+y+"-"+r;
for(int i=0;i<count;i++)
{
b=new StringBuffer(tmplt2);
b.replace(R,R+1,nyr);
b.replace(T,T+1,price*users[i].m3+"");
b.replace(P,P+1,price+"");
b.replace(M,M+1,users[i].m3+"");
b.replace(Y,Y+1,(y-1)+"");
b.replace(U,U+1,users[i].name+"");
bills[i]=b;
}
}
//打印账单
public void print_bills()
{
for(int i=0;i<count;i++)
System.out.println(bills[i]);
}
public static void main(String[]args)
{
Gas g=new Gas(12);
//输入三个用户
g.input_user("aaa", "123");
g.input_user("bbb", "124");
g.input_user("ccc", "125");
//输入煤气用量
g.input_m3(0, 100);
g.input_m3(1, 150);
g.input_m3(2, 200);
//生成账单
g.create_bills2(2012, 4, 12);
//打印账单
g.print_bills();
}
}
更多追问追答
追问
bills3呢,你这不是复制么
追答
你为问的问题本来就无头无脑的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式