判定是否为数字
当输入的数据最后是平均二字时求输入数据的平均值
当输入的数据最后是求和二字时求输入数据的和
求帮助
代码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
String str=in.next();
String[] strs = str.split(",");
List<Integer> list=new ArrayList<>();
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m;
for(int i=0;i<strs.length-1;i++){
m=p.matcher(strs[i]);
String trim = m.replaceAll("").trim();
if (!"".equals(trim)) {
list.add(Integer.parseInt(trim));
}
}
int sum=0;
for (int i=0;i<list.size();i++){
sum+=list.get(i);
}
if (strs[strs.length-1].equals("平均")){
System.out.println(sum*1.0/list.size());
}else{
System.out.println(sum);
}
}
}
用next()读取字符串,写个单独的函数判断字符串是否是数字字符串,如果是,就继续求和或求平均值,否则就退出。
运行结果及代码如下:
数字输入求和:
非数字输入:
import java.util.Scanner;
public class Test {
//判断字符串是否是数字
public static boolean isNumberic(String s){
for(int i = 0;i<s.length();i++){
if(!Character.isDigit(s.charAt(i)))
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
String s2 = sc.next();
String s3 = sc.next();
if( (!isNumberic(s1)) || (!isNumberic(s2)) )
System.out.println("输入的前两个字符串不全是数字");
else{
int n1 = Integer.parseInt(s1);
int n2 = Integer.parseInt(s2);
if(s3.equals("求和"))
System.out.println(s1+"与" + s2+"的和为"+(n1+n2));
else if(s3.equals("平均"))
System.out.println(s1+"与" + s2+"的均值为"+(n1+n2)/2.0);
else
System.out.println("输入错误!");
}
}
}
那你不要一直用nextint
全部按字符串读进来
然后split分解
最后一项单独拎出来做if判断,其他项转int