检查数字从用户指定的输入文件中连续出现的次数

时间:2014-03-18 02:56:55

标签: java

此程序的目标是检查整数在给定文件中连续出现的次数。程序提示用户输入文件,然后读取文件。该文件名为“integers.txt”,程序应该跟踪最长连续运行中出现的数字。由于java标记化的方式,我在程序中没有考虑连续两个数字的问题。如果在给定文件中它们之间存在选项卡,程序不会考虑连续两个数字,尽管应该这样。除此之外,如果连续数字的多次运行具有相同的连续数字长度,它将打印出所有多次运行。它应该只打印第一次出现,但也必须运行程序的其余部分,以确保没有任何其他具有更长的运行。如果它不需要检查任何更长的运行,那么我可以在得到我需要的东西后停止代码。

不允许在我的代码中使用数组。

问题

如果连续数字未被制表符/行(固定)

分隔,则它们仅被视为连续数字

无法跟踪首先出现的最长连续跑步。取代接下来的任何运行。 (固定)

问题 为什么程序看不到由行和/或制表符分隔的连续数字是连续的?我该如何解决这个问题?

另外,如果有两个相同长度的跑步(即如何有四个5和四个3),我怎么才打印出第一轮并仍然确保它是最长的?我现在面临的问题是它会打印出来说有4个5和4个。

INPUT FILE(Integers.txt)

12 2 3 3 98 23   4  4  4 5 
5 5 
      5  21 21 21 -3 -3
-1 2 3 3 3 3 1 3 3 3

检查运行的程序

import java.util.*;
import java.io.*;

public class LongRun {

public static void main(String[] args) 
        throws FileNotFoundException {
    Scanner console = new Scanner(System.in);
    Scanner input = getInput(console);
    int prevInteger = input.nextInt();

    int count = 1;
    int maxCount = count;
    int consecutiveInteger = 0;
    while (input.hasNextInt()) {
        int nextInteger = input.nextInt();
        if (prevInteger == nextInteger) {
            count++;
            if (count > maxCount) {
                maxCount = count;
                consecutiveInteger = prevInteger;
            }
            prevInteger = nextInteger;
        } else {
            count = 1;

            prevInteger = nextInteger;
        }
    }
    System.out.println();
    System.out.println("The longest run: " + maxCount + " consecutive " + consecutiveInteger
            + "'s");
}

public static Scanner getInput(Scanner console)
        throws FileNotFoundException {
    System.out.print("Enter the name of the file of integers: ");
    File inputFile = new File(console.nextLine());
    while (!inputFile.canRead()) {
        System.out.println("File does not exist. Try again.");
        System.out.print("Enter the name of the file of integers: ");
        inputFile = new File(console.nextLine());
    }
    return new Scanner(inputFile);
    }
}

1 个答案:

答案 0 :(得分:1)

为什么不添加另一个变量来存储整数和最长的计数,只有当前计数大于存储的最长计数时才更新这些信息?