利用Java求出有一串身份证的数字,用分号隔开,提取每个身份证号,统计男性和女?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Java求出有一串身份证的数字,用分号隔开,提取每个身份证号,统计男性和女?相关的知识,希望对你有一定的参考价值。
参考技术A import java.io.BufferedReader;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
class Dome
public static void main(String[] args) throws IOException
int quantity[]=new int[2];//1表示男人的个数,0表示女生个数
String card[]=new String[0];//记录身份证号码
String filePath = "D:/aa.txt";//假设你D盘下有一个aa.txt文件中存放着身份证号码
FileInputStream fin;
try
fin = new FileInputStream(filePath);//从filePath中获得输入字节
BufferedReader buffReader = new BufferedReader(new InputStreamReader(fin));
String str = "";//用于暂存读取的内容
str = buffReader.readLine();//按行读取内容给str,只读取一行
card=new String[str.length()/17];//因为不知道身份证号码的数量,所以创建可能有的数量
int p=0;//记录card的数量
for(int i=0;i<str.length();i++)
if(str.indexOf(",",i)!=-1)//判断是否是最后一个逗号
card[p]=str.substring(i,str.indexOf(",",i));//截取对应的身份证号码,这里用的是英文逗号
System.out.println(card[p]);
i=str.indexOf(",", i);//跳到以及处理过的结果末尾
else
card[p]=str.substring(i,str.length());
System.out.println(card[p]);
break;//结尾结束循环
p++;
buffReader.close();//关闭文件流
for(int i=0;i<card.length;i++)
if(card[i].length()==18)//判断是否出错
quantity[((int)card[i].charAt(16)-48)%2]++;//计算第17位是奇数或偶数并对应相加
System.out.println("男生数量:"+quantity[0]);//输出男生结果
System.out.println("女生数量:"+quantity[1]);//输出女生结果
catch (FileNotFoundException e)
System.out.println(e);//输出错误原因
不知道符不符合你的要求
要求做个java程序用户输入数字逗号隔开, 计算下面的公式 多谢了
xy上面带个线的是平均值 sxsy 是 标准差 s
参考技术A public class InputHelperpublic static int[] getInt(String path)
String[] pathsStrings = path.split(",");
int size = pathsStrings.length;
int[] data = new int[size];
for (int i = 0; i < size - 1; i++)
data[i] = Integer.parseInt(pathsStrings[i]);
return data;
//inputHelper类的作用是将输入的字符串解析为int数组
public class Calculate
private int[] data;//数据数组
private int size = 0;//数组长度
private int xCount = 0;//x值的和
private int yCount = 0;//y值的和
private int x_ = 0;//x的平均值
private int y_ = 0;//y的平均值
private int sX = 0;//x方差的平方
private int sY = 0;//y方差的平方
private double r;
private int count;
private int n;
private String paString;
public void calculate()
paString = new Scanner(System.in).nextLine();
data = InputHelper.getInt(paString);
size = data.length;
n=size/2;
System.out.println(data[0]);
for (int j = 0; j < size - 1; j += 2)
xCount += data[j];
yCount += data[j + 1];
x_ = xCount / n;
y_ = yCount / n;
for (int m = 0; m < size - 1; m += 2)
sX += (data[m] - x_) ^ 2;
sY += (data[m + 1] - y_) ^ 2;
for (int n = 0; n < size - 1; n += 2)
count += data[n] * data[n + 1];
r = (count - n * x_ * y_)
/ ((n - 1) * (Math.sqrt(sX / n)) * (Math.sqrt(sY / n)));
System.out.println("r的值是:" + r);
//Calculate类计算方程式的值并输出
public class Test
public static void main(String[] args)
System.out.println("请输入数据,以逗号隔开:");
Calculate calculate = new Calculate();
calculate.calculate();
参考技术B public static void main(String[] args)
Scanner sc=new Scanner(System.in);
System.out.println("请输入x,以英文逗号','分隔,回车结束");
String x=sc.nextLine();
System.out.println("请输入y,以英文逗号','分隔,回车结束");
String y=sc.nextLine();
if(x.length() != y.length())
System.out.println("两组数据个数不相等,程序结束");
String[] xs=x.split(",");
String[] ys=y.split(",");
int n=xs.length;
double[] xd=new double[n];
double[] yd=new double[n];
double sum=0;
for(int i=0; i < n; i++) // 字符串转数字
xd[i]=Double.parseDouble(xs[i]);
yd[i]=Double.parseDouble(ys[i]);
sum+=xd[i] * yd[i];
double x_=getAverage(xd);// x的平均值
double y_=getAverage(yd);// y的平均值
double sx=getSD(xd);// x标准差
double sy=getSD(yd);// y标准差
double r=(sum - n * x_ * y_) / ((n - 1) * sx * sy);
System.out.println("结果r=" + r);
static double getAverage(double[] s) //平均值
double ave=0;
for(int i=0; i < s.length; i++)
ave+=s[i];
ave=ave / s.length;
return ave;
static double getSD(double[] s) //标准差
double sd=0;
double ave=getAverage(s);
double tem1=0;
for(int i=0; i < s.length; i++)
tem1+=(s[i] - ave) * (s[i] - ave);
tem1=tem1 / s.length;
sd=Math.sqrt(tem1);
return sd;
本回答被提问者采纳
以上是关于利用Java求出有一串身份证的数字,用分号隔开,提取每个身份证号,统计男性和女?的主要内容,如果未能解决你的问题,请参考以下文章