首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

练习求助

2011-12-23 
习题求助!代码如下:要求是输入形式是:name_quantity_price输入时 以下划线做出区分,同时将输入的值赋给不

习题求助!
代码如下:要求是输入形式是:name_quantity_price
  输入时 以下划线做出区分,同时将输入的值赋给不同类型的name quantity 和price
  private Product readProduct() throws IOException {

final String DELIM = "_";

String name = "";
int quantity = 0;
double price = 0.0;
/* PLACE YOUR CODE HERE */
System.out.print("Product [Name_Quantity_Price] :");
try
{
String s=new Scanner(System.in).next();
StringTokenizer st=new StringTokenizer(s,DELIM,true);[code=Java][/code]sdrzsun@163.com

name+=st.nextToken();
quantity=Integer.parseInt(st.nextToken());
price=Double.parseDouble(st.nextToken());
}
catch(NumberFormatException e)
{
e.printStackTrace();
}
return new Product(name, quantity, price);
}


[解决办法]
for example

Java code
private Product readProduct() throws Exception {    final String DELIM = "_";    String name = "";    int quantity = 0;    double price = 0.0;    /* PLACE YOUR CODE HERE */    System.out.print("Product [Name_Quantity_Price] :");    try {        String s=new Scanner(System.in).nextLine();        if (!s.matches(".*?_\\d+_\\d+([.]\\d+)?")) { //可以做个一个判断            thorws new Exception("the format of input data is error.");        }        StringTokenizer st=new StringTokenizer(s,DELIM,true);        name+=st.nextToken();        quantity=Integer.parseInt(st.nextToken());        price=Double.parseDouble(st.nextToken());    } catch(NumberFormatException e) {        e.printStackTrace();        thorw e; //把异常抛出,否则要自己return一个null什么的    }    return new Product(name, quantity, price); //要不然这里就不对了}
[解决办法]
使用String.split方法来做吧
Java code
import java.util.Scanner;import java.util.StringTokenizer;import java.io.IOException;/** * Created by IntelliJ IDEA. * User: Administrator * Date: 2011-9-24 * Time: 19:05:34 * To change this template use File | Settings | File Templates. */public class Demo1 {    private Product readProduct() throws IOException {        final String DELIM = "_";        String name = "";        int quantity = 0;        double price = 0.0;/* PLACE YOUR CODE HERE */        System.out.print("Product [Name_Quantity_Price] :");        try        {            String s=new Scanner(System.in).next();            String[] inputs=s.split(DELIM);//            StringTokenizer st=new StringTokenizer(s,DELIM,true);//            name+=inputs[0];            quantity=Integer.parseInt(inputs[1]);            price=Double.parseDouble(inputs[2]);        }        catch(NumberFormatException e)        {            e.printStackTrace();        }        return new Product(name, quantity, price);    }    public static void main(String[] args)throws Exception{        System.out.println(new Demo1().readProduct());    }}class Product{    private String name;    private int quantity;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getQuantity() {        return quantity;    }    public void setQuantity(int quantity) {        this.quantity = quantity;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    private double price;    public Product(){}    public Product(String name,int quantity,double price){        this.name=name;        this.quantity=quantity;        this.price=price;    }    @Override    public String toString() {        return "Product{" +                "name='" + name + '\'' +                ", quantity=" + quantity +                ", price=" + price +                '}';    }} 

热点排行