高分!求助java初学者作业编程题。

这是我的一个作业:输入一个包括4个小数的字符串,数之间用分号分割,格式如下:”a;b;c;d”。计算如下表达式:返回与结果最接近的整数并按照格式打印计算时间。例如:输入:... 这是我的一个作业:
输入一个包括4个小数的字符串,数之间用分号分割,格式如下:”a;b;c;d”。计算如下表达式:
返回与结果最接近的整数并按照格式打印计算时间。例如:
输入:
0.5;-0.8;3;6.3
输出:
2006-10-28 8:00:06
result = 11
如果输入的数字格式不正确。打印输出:Invalid Input字符串。
主要部分我已经实现了,就是检查输入格式部分不知道怎么处理,求在我的代码上补充的完整代码,求各位帮帮忙。
import java.io.*;
import java.util.*;
import java.text.*;

public class Compute {

public static void main(String[] args) throws IOException{
Input m=new Input();
String[] a=new String[4];
double[] b=new double[4];
int i=0;
System.out.println("请输入一个包含4个小数的字符串,数之间用分号分隔。");
String s=m.input();
StringTokenizer n=new StringTokenizer(s,";");
while(n.hasMoreTokens())
{a[i]=n.nextToken();
i++;}
for(int k=0;k<4;k++){
b[k]=Double.valueOf(a[k]).doubleValue();
}
double p=Math.sin(b[0])*Math.cos(b[1])*Math.sqrt(Math.pow(b[2],b[3]));
int h=(int)p;
System.out.println("结果为:"+h);
Date t=new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(t));
}

}
展开
 我来答
flyingFish211
2012-04-09 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
用正则表达式就可以了,看示例

public class A {

public static void main(String[] args) {

String reg = "(\\d+\\.{0,1}\\d+;\\s?){3}(\\d+\\.{0,1}\\d+\\s?)";

String num = "124; 25;12.3;2a";
boolean isRightFormat = num.matches(reg);
System.out.println(isRightFormat);

}

}

-----------你的那部分修改
String s=m.input();

String reg = "(\\d+\\.{0,1}\\d+;\\s?){3}(\\d+\\.{0,1}\\d+\\s?)";

String s = "124; 25;12.3;2a";
boolean isRightFormat = s.matches(reg);
System.out.println(isRightFormat);
追问
你的正则表达式可以直接用吗
百度网友845f74e61
2012-04-09 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1571万
展开全部
在你的基础上改了一下,你看看合不合你的意思。

------------------------------------------------------------------------------------------
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Compute {
public static void main(String[] args) throws IOException {
// Input m = new Input();
String[] a = new String[4];
double[] b = new double[4];
int i = 0;
System.out.println("请输入一个包含4个小数的字符串,数之间用分号分隔。");
// String s = m.input();

// StringTokenizer n = new StringTokenizer(s, ";");
// while (n.hasMoreTokens()) {
// a[i] = n.nextToken();
// i++;
// }
// for (int k = 0; k < 4; k++) {
// b[k] = Double.valueOf(a[k]).doubleValue();
// }

while (true) {
try {
boolean isInput = false;
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();

StringTokenizer n = new StringTokenizer(s, ";");
while (n.hasMoreTokens()) {
b[i++] = Double.parseDouble(n.nextToken());
isInput = true;
}
if (isInput) {
break;
} else {
System.out.println("没有输入内容,重新输入!!");
}
} catch (Exception e) {
System.out.println("输入错误,重新输入!!");
}

}

double p = Math.sin(b[0]) * Math.cos(b[1])
* Math.sqrt(Math.pow(b[2], b[3]));
int h = (int) p;
System.out.println("结果为:" + h);
Date t = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(t));
}

}
追问
你好像没有检查输入格式,就是没有假如输入的格式不是a;b;c;d,应该怎么处理。
追答
while (n.hasMoreTokens()) {
b[i++] = Double.parseDouble(n.nextToken());
isInput = true;
}
// 加上下边这段
if (b.length < 4) {
System.out.println("输入格式不是a;b;c;d");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ruoxy888
2012-04-09
知道答主
回答量:3
采纳率:0%
帮助的人:4690
展开全部
在你的String s= m.input();后添加
String[] q=s.split(";");
int count=q.length;
if(count==4)
System.out.println("true");//格式正确
else
System.out.println("false");//格式错误
我的思路就是将字符串用“;”分割成数组,如果正确的话,那么就应该有4个数组。希望可以帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
诚信识金
2012-04-09 · TA获得超过125个赞
知道答主
回答量:112
采纳率:0%
帮助的人:30.9万
展开全部
搞不懂什么意思啊!
追问
哪里不懂啊
追答
输入一个包括4个小数的字符串,数之间用分号分割,格式如下:”a;b;c;d”。计算如下表达式:
返回与结果最接近的整数并按照格式打印计算时间。例如:
输入:
0.5;-0.8;3;6.3
输出:
2006-10-28 8:00:06
result = 11

题目意思。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式