此程序的目标是检查整数在给定文件中连续出现的次数。程序提示用户输入文件,然后读取文件。该文件名为“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);
}
}
答案 0 :(得分:1)
为什么不添加另一个变量来存储整数和最长的计数,只有当前计数大于存储的最长计数时才更新这些信息?