基本上,我的问题是,我有一个包含5000个值的文本文件。我应该弄清楚如何仅显示范围内的值(没有设置范围,但我选择了1000到1500之间。因此,应找到这些值之间的所有数字并输出到名为“User”的文本文件名称“.txt。
主要的困境是,我无法在代码中包含文本文件。我需要它作为命令行arg处理,我以前从未真正处理过这类问题。
到目前为止,这是我的代码:
import java.util.*;
import java.io.*;
public class TestProg {
public static void main(String[] args) {
int LowerBound = 0;
int UpperBound = 0;
String Name1 = null;
String Name2 = null;
//instantiates the array to read in the numbers from the file
double[] FileNums = new double[5000];
//instantiates the array to output the upper and lower bounded values.
double[] OutputNums = new double[5000];
Scanner scanner1 = new Scanner(System.in);
System.out.println("This program will output the upper or lower
bounds of the text file.
Please input which lower bound you would like.");
LowerBound = scanner1.nextInt();
System.out.println("Now input the upper bound.");
UpperBound = scanner1.nextInt();
Names(Name1, Name2);
}
public static String Names(String Name1, String Name2) {
Scanner scanner2 = new Scanner(System.in);
System.out.println("Please input your first name.");
Name1 = scanner2.nextLine();
System.out.println("Now input your last name.");
Name2 = scanner2.nextLine();
}
}
我基本上坚持如何开始。我相信它会涉及一个while循环,以告诉程序只找到范围内的值,但我不完全确定。
我还有另一个小问题,其中Name1和Name2保持恢复为null,因为我在单独的方法中输入了名称。
任何帮助都会非常感激。
答案 0 :(得分:0)
使用以下代码在给定范围内打印数字(min,max,含)。
File output = new File("output.txt");
File file = new File("input.txt");
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(
file));
byte[] buffer = new byte[(int) file.length()];
bin.read(buffer);
String fileStr = new String(buffer);
String[] numbers = fileStr.split("\\s");
Scanner s = new Scanner(System.in);
System.out.println("Enter min number in range");
int rangeMin = s.nextInt();
System.out.println("Enter max number in range");
int rangeMax = s.nextInt();
for (String number : numbers) {
if (Integer.parseInt(number) >= rangeMin
&& Integer.parseInt(number) <= rangeMax) {
System.out.println(Integer.parseInt(number));
}
}
bin.close();
使用space作为分隔符在input.txt中给出的输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...