for(int i=1;i<=m;i++)
{
String c=S.get(4*i-2).toString();//S为一向量,从中取出第4*i-2个记录(textfield中的记录),将它由object型转化成String型,再转化成int型
if(c!="")
total=total+Integer.parseInt(c);
//将每条记录的第二个元素由object转化成int型
}
//t5是一个TextArea组件
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
}
可以运行,但是
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
输不出来,一到这就卡
{
String c=S.get(4*i-2).toString();//S为一向量,从中取出第4*i-2个记录(textfield中的记录),将它由object型转化成String型,再转化成int型
if(c!="")
total=total+Integer.parseInt(c);
//将每条记录的第二个元素由object转化成int型
}
//t5是一个TextArea组件
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
}
可以运行,但是
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
输不出来,一到这就卡
total=total+Integer.parseInt(c);比较字符串,使用if(!c.equal(""))
//我只改了个字符串判断,另外叫了个catch for(int i=1;i<=m;i++){
String c=S.get(4*i-2).toString();//S为一向量,从中取出第4*i-2个记录(textfield中的记录),将它由object型转化成String型,再转化成int型
if(!c.equals(""))
{
try
{
total=total+Integer.parseInt(c);
}catch(NumberFormatException e)
{
e.printStackTrace;
}
}
}
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
}
感觉应该是:
for(int i=1;i<=m;i++){
String c=S.get(4*i-2).toString();//S为一向量,从中取出第4*i-2个记录(textfield中的记录),将它由object型转化成String型,再转化成int型
if(c!="")
total=total+Integer.parseInt(c);
这部分错了
是一个小程序:
代码:import java.awt.*;
import java.util.Vector;
import java.awt.event.*;
public class Shop {
/**
* @param args
*/
int n=1,m=1;
Choice l=new Choice();
Vector S=new Vector();
Frame f=new Frame();
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Button b1=new Button("添加");
Button b2=new Button("删除");
Button b3=new Button("定位");
Button b4=new Button("清空");
Button b5=new Button("付款");
Button b6=new Button("清单");
Button b7=new Button("清屏");
Button b8=new Button("首位");
Button b9=new Button("末位");
Label l1=new Label("品名");
Label l2=new Label("数量");
Label l3=new Label("单价");
TextField t1=new TextField();TextField t2=new TextField();
TextField t3=new TextField();
TextField t4=new TextField();
TextArea t5=new TextArea();
public Shop(){p1.setLayout(new GridLayout(1,8));
p4.setEnabled(true);
t5.setSize(80,50);
p2.setLayout(new BorderLayout());
p2.add(p3,"North");
p2.add(p4,"Center");f.add(p1,"North");
f.add(p2,"Center");
p1.add(l1);
p1.add(t1);
p1.add(l2);
p1.add(t2);
p1.add(l3);
p1.add(t3);
p1.add(b1);
p1.add(b2);
p3.add(b3);
p3.add(t4);
p3.add(b4);
p3.add(b5);
p3.add(b6);
p3.add(b7);
p3.add(b8);
p3.add(b9);
p2.add(p4);
p4.add(t5);// t5.setSize(50,50);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{System.exit(1);}
});
f.setBackground(new Color(250,200,200));
f.setSize(500,300);
f.setVisible(true);// t5.setText(S.toString());
b1.addActionListener(new Monitor());
b2.addActionListener(new Monitor());
b3.addActionListener(new Monitor());
b4.addActionListener(new Monitor());
b5.addActionListener(new Monitor());
b6.addActionListener(new Monitor());
b7.addActionListener(new Monitor());
b8.addActionListener(new Monitor());
b9.addActionListener(new Monitor());
}
public static void main(String[] args) {
Shop p=new Shop();
// TODO Auto-generated method stub
//设置窗口中各部件布局
}
private class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e){
String s=(String)e.getActionCommand();
if(s.equals("添加"))
{
S.add(t1.getText());
S.add(t2.getText());
S.add(t3.getText());
S.add(t4.getText());
t5.append("添加"+m+"记录 "+S.get(n-1)+" 数量"+S.get(n)+"斤 单价"+S.get(n+1)+"元 "+"\n");
n=n+4;
m++;
}
if(s.equals("删除"))
{
S.clear();
}
if(s.equals("清屏"))
t5.setText("");
if(s.equals("付款"))
{
int total=0;
for(int i=1;i<=m;i++)
{
String c=S.get(4*i-2).toString();
if(!c.equals(""))
total=total+Integer.parseInt(c);
//将每条记录的第二个元素由object转化成int型
}
t5.append("你购买了"+m+"种商品 总金额为:"+total+"元 欢迎付款,谢谢"+"\n");
}
}
}
}
程序功能:
1、网上购物结算模拟
程序功能:创建模拟购物结算界面并实现结算功能。其中使用了内部类和Vector 向量。运行程序后,可输入购买记录,单击“添加”按钮将保存记录到Vector 向量中,并可以显示任意一个记录,或按记录号删除记录,并可给出购买物品总额,并可清空所有记录。
很简单的程序,但是java初学者,希望各位高手帮忙看一下。
改成 for (int i = 1; i < m; i++)
数组越界了。