这个代码要怎么写?

ADAM129XU 2009-10-08 01:03:08
"buy x share(s) at $y each"
or
"sell x share(s) at $y each"
...全文
168 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
Start with做了。。还是谢谢两位
nihuajie05 2009-10-08
  • 打赏
  • 举报
回复
额。。我好像没有匹配美元符号。。你如果你需要,在第二个(\\d+)前面加上\\$来匹配下
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
我先试试去啊,一会回来结分,谢谢两位啊。
nihuajie05 2009-10-08
  • 打赏
  • 举报
回复

import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) throws IOException {
String reg="buy\\s(\\d+)\\sshare(?:s?)\\sat\\s(\\d+)\\seach";
String anotherreg="sell\\s(\\d+)\\sshare(?:s?)\\sat\\s(\\d+)\\seach";
Pattern patternforbuy=Pattern.compile(reg);
Pattern patternforsell=Pattern.compile(anotherreg);
Scanner input=new Scanner(System.in);
String in;
while(true)
{
System.out.print("please enter command:");
in=input.nextLine();
Matcher m=patternforbuy.matcher(in);
Matcher mtwo=patternforsell.matcher(in);
if(m.matches())
System.out.println("买了"+m.group(1)+"个,每个"+m.group(2));
else if(mtwo.matches())
System.out.println("卖了"+mtwo.group(1)+"个,每个"+mtwo.group(2));
else
{

if(in.equalsIgnoreCase("exit"))
{
System.out.println("exit safely");
return;
}
System.out.println("no Match");
}
}
}
}
nihuajie05 2009-10-08
  • 打赏
  • 举报
回复
很久没写代码了。。好慢。。。
eagle1980 2009-10-08
  • 打赏
  • 举报
回复
你们老师要考你字符串处理吧。
把字符串用split处理成字符串数组,下面随便搞咯
CoLinM 2009-10-08
  • 打赏
  • 举报
回复
不知道lz要做什么?难道是要多语言支持?
justinavril 2009-10-08
  • 打赏
  • 举报
回复
System.out.println("买了"+ getTotal(str) +",每个"+ getPrice(str) +"美元。");

然后如果可以确保字符串格式一定是输入正确的话 用startWith判断更简单
justinavril 2009-10-08
  • 打赏
  • 举报
回复
import java.util.*;

public class Output {
public Output(){
Scanner scanner = new Scanner(System.in);

String str = null;

while(!(str = scanner.nextLine()).equals("q")){
if(str.matches("buy\\s\\d+\\s(share|shares)\\sat\\s\\$\\d+\\seach")){
System.out.print("买了"+ getTotal(str) +",每个"+ getPrice(str) +"美元。");
}
else if(str.matches("sell\\s\\d+\\s(share|shares)\\sat\\s\\$\\d+\\seach")){
System.out.print("卖了"+ getTotal(str) +",每个"+ getPrice(str) +"美元。");
}
else{
System.out.println("Wrong Format!Pleass enter again!");
}

str = scanner.nextLine();
}
}

public static String getTotal(String str){
int start = str.indexOf(" ");
int end = str.indexOf(" ", start+1);

return str.substring(start, end);
}

public static String getPrice(String str){
int start = str.indexOf("$");
int end = str.indexOf(" ", start+1);

return str.substring(start+1, end);
}

public static void main(String args[]){
new Output();
}
}

楼主完善细节吧,基本功能是这样的。
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
谢谢#9,还要把x和y按照用户输入的数字读出来,x和Y代表数字。
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
。。。大家给个音讯呗。。。
nihuajie05 2009-10-08
  • 打赏
  • 举报
回复
用正则啊。。。怎么我回的没有呢。。
buy (\d+) share(?:s?) at $(\d+) each
然后用反向引用啊。。。
等我写程序给你
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
怎么匹配?用IndexOf吗?
amdgaming 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 adam129xu 的回复:]
没办法啊,我开始是那么做的,老师非要让我用我一楼发的那种格式写入。我开始就先问sell和buy,确定一个之后然后分别数量和价格。。不让。。哎
[/Quote]
专业 也行 啊 一个 一个 匹配 呗 ,楼主
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
没办法啊,我开始是那么做的,老师非要让我用我一楼发的那种格式写入。我开始就先问sell和buy,确定一个之后然后分别数量和价格。。不让。。哎
justinavril 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 adam129xu 的回复:]
是可变的,输入什么值,相应的X和Y就是什么.
[/Quote]
那我觉得你这么做不是很简洁吧 你看这样行吗? 一开始就判断是Sell还是Buy,然后继续输入一共买或卖了多少股,最后输入单股的价格 这样就用去做该死的字符串匹配了 也不用强制用户按照指定格式输入字符串
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
是可变的,输入什么值,相应的X和Y就是什么.
justinavril 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 adam129xu 的回复:]
没打上。。
用户输入buy x share(s) at $y each或者sell x share(s) at $y each其中的一句话。
假如输入了buy x share(s) at $y each,就输出一个
买了x个,每个y元。
假如输入sell x share(s) at $y each,就输出一句
卖了X个,每个y元。


[/Quote]
这里的X和Y是定死的 还是可变的 比如:sell 1000 share(s) at $9 each
ADAM129XU 2009-10-08
  • 打赏
  • 举报
回复
没打上。。
用户输入buy x share(s) at $y each或者sell x share(s) at $y each其中的一句话。
假如输入了buy x share(s) at $y each,就输出一个
买了x个,每个y元。
假如输入sell x share(s) at $y each,就输出一句
卖了X个,每个y元。

justinavril 2009-10-08
  • 打赏
  • 举报
回复
不知道这两句话放在什么上下文中去理解,字面上的意思就是:买X股,每股Y美元;卖X股,每股Y美元。但是,不知道上下文,没法写程序啊...

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧