所以我编写了一些计算用户输入的最小和最大浮点数的东西。
现在我收到了一个跟进问题,要求我将最小和最大数字存储在一个文件中。
存储min和max不是任何问题,只是做了一个outputfile打印语句,它说这是最大的数字+ min(min是变量)。相反,Max变量。
但是,在计算出哪个数字是最大和最小的数据之前,我想要获取用户输入的每个数字。
输出文件的打印语句是“(min + max + number);但是它只存储了用户的最小,最大和最后输入的数字,而不是全部存储的数字。
我是否需要制作新变量来跟踪每个输入的浮动数字?或者我是否需要连接其他一些变量?
我曾尝试过使用数组,但无法掌握它。
看看这个文件,它到底有多远; https://imgur.com/a/dE0JB
可能有另一种更合适的方式,不要犹豫改变,只是这样才有效。
我希望你能理解我。
期待你的建议。
使用Java
`import java.io. *; import java.io.IOException; import java.util.Scanner;
公共类输出{
public static void main(String[] args) throws IOException //Eftersom vi inte lärt oss att hantera exceptions än
{
PrintWriter outputFile = new PrintWriter("C:\\Users\\Boo\\Desktop\\output.txt"); //Öppnar en ny fil
// Variabel för att förvara "flyttal"
float nummer;
float array[]=null;
//Deklarera max variabeln för att hålla största numret
//Initialisera max med minimum värde möjligt
float max=Float.MIN_VALUE;
//Deklarera min variabeln för att hålla minsta numret
//Initialisera min med maximum värde möjligt
float min=Float.MAX_VALUE;
//char variabel för att förvara Y/N, med andra ord är du klar?
char yn;
//scanner för att läsa input
Scanner keyboard = new Scanner(System.in);
System.out.println("Start entering floating point numbers");
do {
//läs float input
nummer = keyboard.nextFloat();
if(max<nummer) //om max är mindre än nuvarande nummer
max = nummer; //Då uppdateras max till nuvarande nummer
if(min>nummer) //om min är större än nuvarande nummer
min = nummer; //Uppdatera min till nuvarande nummer
// Fråga användaren om inmatandet är klart?
System.out.print("Are you done? (Y/N)?");
yn = keyboard.next().charAt(0);
// En loop som går tills användaren skriver n/N
}while(yn=='N' || yn=='n');
// Printar sen då resultatet, dvs högsta och minsta numret
System.out.println("Biggest number entered is: "+max);
System.out.println("Smallest number entered is: " +min);
outputFile.println("Biggest number entered is:" + min);
outputFile.println("Smallest number entered is:" + max);
outputFile.println("All of the numbers entered is:" + );
System.out.println("Data written to the file.");
outputFile.close();
}
}
答案 0 :(得分:2)
使用数组时,需要为数据分配空间。这意味着您需要提前知道所需物品的数量:
float array[] = new float[100];
这将创建一个空格为100 float
s。
然后,当您从用户那里读取数据时,将所有数字添加到数组中:
int currentIndex= 0; // Keep track of where to put the next number
do {
nummer = keyboard.nextFloat();
array[currentIndex++] = nummer;
// .....
} while(currentIndex < 100 && (yn == 'N' || yn == 'n'));
请注意,我已添加一项检查,确保您在阵列已满时不添加任何内容。
最后,使用循环写入文件中的所有值。
outputFile.println("All of the numbers entered:" + );
for (int i = 0; i < currentIndex; i++) {
outputFile.println(array[i]);
}
注意:还有其他容器,如ArrayList,不需要您提前知道需要多少项目。