高分!求助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));
}
} 展开
输入一个包括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));
}
} 展开
4个回答
展开全部
用正则表达式就可以了,看示例
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);
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);
追问
你的正则表达式可以直接用吗
展开全部
在你的基础上改了一下,你看看合不合你的意思。
------------------------------------------------------------------------------------------
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));
}
}
------------------------------------------------------------------------------------------
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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你的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个数组。希望可以帮到你
String[] q=s.split(";");
int count=q.length;
if(count==4)
System.out.println("true");//格式正确
else
System.out.println("false");//格式错误
我的思路就是将字符串用“;”分割成数组,如果正确的话,那么就应该有4个数组。希望可以帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞不懂什么意思啊!
追问
哪里不懂啊
追答
输入一个包括4个小数的字符串,数之间用分号分割,格式如下:”a;b;c;d”。计算如下表达式:
返回与结果最接近的整数并按照格式打印计算时间。例如:
输入:
0.5;-0.8;3;6.3
输出:
2006-10-28 8:00:06
result = 11
题目意思。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询