我是新来的Java和我试图写一个程序,要求用户输入只包含数字的txt文件的名称,并计划将输出的总和,平均,最大和最小的文件中的数字。 我已经写了许多程序,但我坚持试图找到值的最大值和最小值。 你可以给任何信息将是有益的,如果我不太清楚,我可以尝试进行阐述。 到目前为止我的代码是:
public class NumberFile{
public static void main(String[] args){
boolean goodName = false;
int currentNumber, sum = 0, numberCount=0;
Scanner numberFile = null;
FileReader infile;
Scanner input = new Scanner(System.in);
System.out.println("Please enter the name of the file you wish to import: ");
String fileName = input.nextLine();
while (!goodName){
try{
infile = new FileReader(fileName);
numberFile = new Scanner(infile);
goodName = true;
}
catch (IOException e){
System.out.println("invalid file name, please enter another name");
fileName = input.nextLine();
}
}
while (numberFile.hasNextInt()){
currentNumber = numberFile.nextInt();
sum+=currentNumber;
numberCount++;
}
System.out.println("The sum of the numbers is " +sum);
System.out.println("The average of the numbers is " + ((double) sum)/numberCount);
} // end main
} // end class
有两个变量分max和(当然最小值和最大值最初应int.max)提示:
if(currentNumber < min)
{
min= currentNumber;
}
if(currentNumber > max)
{
max = currentNumber
}
以上是在你的文件中读取循环。
声明两个int变量 - 一个“分”,一个“最大”。 与Integer.MAX_VALUE的和最大值Integer.MIN_VALUE的初始化分钟。
然后while循环内检查每个号对这些变量 - 即。 如果数量比“MIN”小然后将其指定为一个新的“分钟”值。 如果其大于“最大”,然后将其指定为新的“最大”值。
希望这澄清,它很简单所以我没有把任何代码,这样你就可以实现它自己。
int min=Integer.MAX_VALUE;
int max=Integer.MIN_VALUE;
while (numberFile.hasNextInt()){
currentNumber = numberFile.nextInt();
sum+=currentNumber;
numberCount++;
if(min>currentNumber){
min=currentNumber;
}
if(max<currentNumber){
max=currentNumber;
}
}
声明最低值最大int值和每一个你看了新的价值比目前的最低值更小的时间重新分配的最小值。 同样的问题也发生在最大值。
我曾在那里我需要找到含有大量组插入语句的.sql文件的最大编号的实例。 这些声明也插入了标识与所有其他字段一起。 我认为这将使一个很好的例子作为文件不仅具有整数但大块混合数据类型。 下面是我的程序,
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
/**
* @author Hamzeen. H.
* @date 15/10/2015
*/
public class Driver {
public Driver() {
}
private void readData() {
try {
Scanner inputFile = new Scanner(new DataInputStream(
new FileInputStream("all_inserts.sql")));
long highest = 0L;
while (inputFile.hasNext()) {
String strNum = buildNumber(inputFile.next());
if (!strNum.equals("")) {
Long temp = Long.parseLong(strNum);
if (temp > highest) {
highest = temp;
}
}
}
System.out.println("Highest:: " + highest);
inputFile.close();
} catch (IOException e) {
System.out.println("Problem finding file");
}
}
private String buildNumber(String str) {
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (Character.isDigit(ch)) {
strBuilder.append(ch);
} else if ('.' == ch || !Character.isDigit(ch) || ',' == ch) {
return strBuilder.toString().trim();
}
}
return strBuilder.toString().trim();
}
public static void main(String args[]) {
new Driver().readData();
}
}