Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Benford定律Java-从文件读取的字符串数组中提取第一个数字?_Java_Arrays_File - Fatal编程技术网

Benford定律Java-从文件读取的字符串数组中提取第一个数字?

Benford定律Java-从文件读取的字符串数组中提取第一个数字?,java,arrays,file,Java,Arrays,File,我试图用Java创建一个程序,从文件中读取,提取每个数字的第一个数字,确定0-9的频率,并以数字0到9的百分比打印出频率。我已经知道如何从我的lakes.txt文件中读取数据 FileReader fr = new FileReader ("lakes.txt"); BufferedReader br = new BufferedReader(fr); //for loop that traverses each line of the file

我试图用Java创建一个程序,从文件中读取,提取每个数字的第一个数字,确定0-9的频率,并以数字0到9的百分比打印出频率。我已经知道如何从我的lakes.txt文件中读取数据

    FileReader fr = new FileReader ("lakes.txt");        
    BufferedReader br = new BufferedReader(fr);

    //for loop that traverses each line of the file 
    int count = 0;
    for (String s = br.readLine(); s!= null; s = br.readLine()) {
        System.out.println(s); //print out every term
        count++;    
    }

    String [] nums;
    nums = new String[count];

    //close and reset file readers 
    fr.close();
    fr = new FileReader ("lakes.txt");        
    br = new BufferedReader(fr);

    //read each line of the file
    count = 0;

    for (String s = br.readLine(); s!= null; s = br.readLine()) {
        nums[count] = s;
        count++;
    }
我目前正在打印每一个学期,以确保它是有效的

现在,我试图找出如何从字符串数组中的每个项中提取第一个数字

例如,数组中的第一个数字是15917,我想提取1。第二个数字是8090,我想提取8


我该怎么做

从字符串中提取第一个数字

从字符串中获取第一个字母 将1解析为一个数字 例如:

String firstLetter = Character.toString(s.charAt(0));//alternatively use s.substring(0,1)
int value = Integer.parseInt(firstLetter);

这将被放置在文件读取循环中,假设文件的每一行都包含一个数值,换句话说,不需要对文件的每一行进行进一步的处理或错误处理 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class TermReader { public static void main(String[] args) throws IOException { FileReader fr = new FileReader ("lakes.txt"); BufferedReader br = new BufferedReader(fr); int[] tally = new int[]{0,0,0,0,0,0,0,0,0,0}; int total = 0; for (String s = br.readLine(); s!= null; s = br.readLine()) { char[] digits = s.toCharArray(); for(char digit : digits) { if( Character.isDigit(digit)) { total++; tally[Integer.parseInt(Character.toString(digit))]++; break; } } } br.close(); for(int index = 0; index < 10; index++) { double average = tally[index] == 0 ? 0.0 : (((double)tally[index]) / total) * 100; System.out.println("[" + index + "][" + tally[index] + "][" + total + "][" + Math.round(average * 100.0) / 100.0 + "]"); } } }