Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将字符串解析为Java对象_Java_String_Parsing_Object - Fatal编程技术网

Java将字符串解析为Java对象

Java将字符串解析为Java对象,java,string,parsing,object,Java,String,Parsing,Object,如何解析如下字符串: String m = "Material: chair\nPrice: 302.91\nCount: 5" 转换为java对象: public class Order { String material; String price; int count; } 只需创建一个类: class Material{ String material; String price; int count; public Mater

如何解析如下字符串:

String m = "Material: chair\nPrice: 302.91\nCount: 5"
转换为java对象:

public class Order {
    String material;
    String price;
    int count;
}
只需创建一个类:

class Material{
    String material;
    String price;
    int count;
    public Material(String material, String price, int count){
         this.material = material;
         this.price = price;
         this.count = count;
    }
    // Override toString()? Comparable (compareTo())? 
}

一个非常简单的解决方案是:

公共类主{
公共静态void main(字符串[]args){
字符串m=“材料:椅子\n价格:302.91\n计数:5”;
订单=新订单(m);
系统输出打印项次(订单计数);
系统输出打印项次(订单物料);
系统输出打印项次(订单价格);
}
}
阶级秩序{
弦材料;
串价;
整数计数;
公共秩序(字符串str){
字符串[]parsedArr=str.split(“\n”);
字符串materialStr=parsedArr[0];
字符串priceStr=parsedArr[1];
字符串countStr=parsedArr[2];
this.materials=materialStr.split(“:”[1].trim();
this.price=priceStr.split(“:”[1].trim();
this.count=Integer.parseInt(countStr.split(“:”[1].trim());
}
}

就像其他答案一样。我建议使用JSON而不是这种随机字符串。

欢迎使用Stackoverflow,请阅读。特别注意。确保用正确的标签(编程语言、相关技术等)标记问题。你在发布一个好的问题上投入的精力越多:一个容易阅读、理解的问题,而且这个问题越容易吸引相关的人,你得到帮助的速度就越快。祝你好运你的意思是左手边的值例如Material应该被自动考虑并声明为变量名和右手边的值,以确定它是什么类型并分配给合适的类型吗?最简单的解决方案不是发明自己的序列化格式,而是使用已经存在的格式,比如JSON。所以问题是:为什么你要自己创建这样的机制而不是使用它呢?不,我的意思是,我如何才能将值“chair”、“302.91”和5解析为一个变量。@Pshemo我知道这会更容易,但我的任务是这样做……问题的“解析字符串”部分呢,“这似乎是真正的重点?”另一个戴夫修正了这正是我要找的。非常感谢。
class Foo{
    public static void main (String[] args){
         String S = "Wood 50 10";
         Material m = new Material();
         //m is now an object
         // You want to parse a string into an object. One way is java.util.Scanner
         // with methods like Scanner.nextInt() and Scanner.next();
         java.util.Scanner sc = new java.util.Scanner(S);
         m = new Material(sc.next(), sc.next(), sc.nextInt());

         String[] values = S.split(" "); // Split the string into and copy to an array
         m = new Material(values[0], values[1], Integer.parseInt(values[2]));
    }
}