Java 标识文件中出现的单个最大数字
让我们假设一个文本文件是一本数学教科书。我应该如何编码以找出该文件中的最大数字?我知道使用Java 标识文件中出现的单个最大数字,java,coding-style,numbers,extract,long-integer,Java,Coding Style,Numbers,Extract,Long Integer,让我们假设一个文本文件是一本数学教科书。我应该如何编码以找出该文件中的最大数字?我知道使用StringTokens、parseLong、split等,但我无法找到一种正确的方法来组合它们 准确地说,假设文本有如下内容: Chapter 3.5 Million has 6 zeros. Ex. 6,000,000 Billion has 9 zeros. Ex. 9,000,000,000 Trillion has 12 zeros. Ex. 8,000,000,000,000 最大的数字是8
StringTokens
、parseLong
、split
等,但我无法找到一种正确的方法来组合它们
准确地说,假设文本有如下内容:
Chapter 3.5
Million has 6 zeros. Ex. 6,000,000
Billion has 9 zeros. Ex. 9,000,000,000
Trillion has 12 zeros. Ex. 8,000,000,000,000
最大的数字是800000000000
。我如何提取
提前感谢。您可以使用
biginger
public class Test {
public static void main(String[] arg) {
String line = "215,485,454,648,464";
String line1 = "5,454,546,545,645";
List<BigInteger> list = new ArrayList<BigInteger>();
list.add(new BigInteger(line.replaceAll(",", "")));
list.add(new BigInteger(line1.replaceAll(",", "")));
Collections.sort(list);
System.out.println("largest: " + list.get(list.size() - 1));
}
}
存储到目前为止看到的最大数字(最初为负无穷大),然后遍历整个文件提取每个数字,如果它大于您存储的最大数字,则存储它。最后,存储的数字是最大的数字。使用double而不是long来解释非常大的数字和非整数。查找所有整数的简单方法是使用扫描器,将next()输入parseDouble(…)并比较任何不引发NumberFormatException的内容。最简单的方法是逐行解析文本文件 可以使用正则表达式执行此操作,以查看当前行中是否有任何数字格式。如果您这样做,那么您可以检查它是否大于先前找到的数字 如果您还没有接触到正则表达式,那么这里有一个非常好的正则表达式教程
使用扫描仪界面。此代码假定您将文件路径作为第一个参数传入。扫描仪接口处理数字中的逗号。我使用BigInteger来处理任何大小的数字
public static void main (String[] args) throws java.lang.Exception
{
BigInteger biggestNumber = null;
Scanner s = new Scanner(new FileReader(args[0]));
while( s.hasNext() ){
if( s.hasNextBigInteger() ){
BigInteger number = s.nextBigInteger();
if( biggestNumber == null || number.compareTo(biggestNumber) == 1 ){
biggestNumber = number;
}
}
else {
s.next();
}
}
System.out.println("Biggest Number: " + biggestNumber.toString());
}
您可以在以下位置使用联机示例:。它不从文件中读取,而是在代码中使用字符串
如果这本书将大量数字分割成几行,那么这一点就会失败。我不确定你的原始资料是什么,但这是需要记住的 数学书包含许多不同形式的数字。。。科学记数法、整数、复数(我想你需要绝对值)等等,如果你只是扫描一本印刷的教科书,有些记数法可能会被弄得无法辨认。。。在开始之前,您应该以视觉方式检查足够多的文本流,以确定您感兴趣的所有不同数字格式。像阶乘之类的东西呢?如果遇到字符串
100代码>你想把它算作100还是阶乘值?谢谢大家!这正是我所需要的。它简单易读,而且很短。一个双精度仍然不能解释非常大的数字。BigInteger将处理较大的整数。
public static void main (String[] args) throws java.lang.Exception
{
BigInteger biggestNumber = null;
Scanner s = new Scanner(new FileReader(args[0]));
while( s.hasNext() ){
if( s.hasNextBigInteger() ){
BigInteger number = s.nextBigInteger();
if( biggestNumber == null || number.compareTo(biggestNumber) == 1 ){
biggestNumber = number;
}
}
else {
s.next();
}
}
System.out.println("Biggest Number: " + biggestNumber.toString());
}