在goalline上

时间:2017-12-07 11:29:17

标签: java

所以我编写了一些计算用户输入的最小和最大浮点数的东西。

现在我收到了一个跟进问题,要求我将最小和最大数字存储在一个文件中。

存储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();
}
}

1 个答案:

答案 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,不需要您提前知道需要多少项目。