Java для начинающих: вставьте в файл случайные числа, управляемые пользователем, и суммируйте их - PullRequest
0 голосов
/ 18 сентября 2019

Я новичок и застрял в точке, где я не знаю, что делать.Задания спрашивают это:

1) попросить пользователя ввести имя файла или «готово» для выхода
2) увеличить имя файла: добавить «_n»
3) попросить пользователя ввести верхнийпредел диапазона случайного числа (макс. 100)
4) запросить у пользователя количество случайных чисел (m), которые должны быть записаны в файл
5) создать файл и поместить (m) случайные целые числа(с максимальным значением, введенным пользователем, меньше 100)
6) Откройте созданный файл, прочитайте его, суммируйте все значения и отобразите его
7) Вернитесь к # 1 8) Когда пользовательвводится "готово", отображать количество файлов, созданных во время сеанса

это то, что у меня есть до сих пор:

import javax.swing.JOptionPane;                                                                            
import java.io.*;                    
import java.util.Random;                
import java.util.Scanner;                             

public class Program {
public static void main (String[] args)                  
        throws IOException {

    String fileName;
    String sum = null;

    String upperRangeLimit;
    String userRandomNumber;

    boolean done = false;
    int x = 1;
    //int n;

    while (!done)
    {
        fileName = JOptionPane.showInputDialog("Enter a file name or done to exit: ");

        if (!(fileName.equals("done")))
            fileName = "fileName" + "_" + x++;

        Random randomNumbers = new Random(100);
        upperRangeLimit = JOptionPane.showInputDialog("Enter the upper range limit:\n Maximum range is 100");       
        userRandomNumber = JOptionPane.showInputDialog("Error; Maximum range is 100. Enter another number: ");

        File file = new File(fileName);

        PrintWriter outputFile = new PrintWriter(fileName);
            //for (n = 1; n < upperRangeLimit; n++)
            //{
            //  sum = 
            //} 
        outputFile.println(randomNumbers);
        outputFile.close();`enter code here`


        Scanner inputFile = new Scanner(file); 

        while (inputFile.hasNext())
        {
            sum = inputFile + inputFile.nextLine();
        }
            System.out.println(sum);
            inputFile.close();


        if (fileName.equals("done"))
            done = true;
    }

}

}

Помощь очень нужна и ценится, спасибо!

1 Ответ

0 голосов
/ 19 сентября 2019

Я немного изменил ваш код, теперь он работает нормально, как вы и хотели.Прочитайте мои комментарии, чтобы понять, что вы сделали не так.

import javax.swing.JOptionPane;
import java.io.*;
import java.util.Random;
import java.util.Scanner;

public class Program{
    public static void main(String[] args) throws IOException {

        String fileName;
        int sum = 0; // this should be integer because you want to sum the numbers...

        String upperRangeLimit;
        String userRandomNumber;

        boolean done = false;
        int x = 1;
        // int n;

        while (!done) {
            fileName = JOptionPane.showInputDialog("Enter a file name or done to exit: ");

            if (!(fileName.equals("done")))
                fileName = fileName + "_" + x++; // you wrote "fileName" like that which means you dont actually
                                                    // reference the variable

            // I didnt understand this part , i mean you ask for the input correctly but the text you provide to the user isnt write
            upperRangeLimit = JOptionPane.showInputDialog("Enter the upper range limit:\n Maximum range is 100");
            userRandomNumber = JOptionPane.showInputDialog("Error; Maximum range is 100. Enter another number: ");

            File file = new File(fileName);

            // convert user input to integers
            int limit = Integer.parseInt(upperRangeLimit);
            int range = Integer.parseInt(userRandomNumber);

            // write to the file
            PrintWriter outputFile = new PrintWriter(fileName);

            for (int n = 1; n < limit; n++) {
                // (Math.random() * ((max - min) + 1)) + min => way to generate random number in
                // range
                int random = (int) ((Math.random() * ((range - 1) + 1)) + 1);
                outputFile.println(random);
            }
            outputFile.close();

            // read the file
            Scanner inputFile = new Scanner(file);

            while (inputFile.hasNext()) {
                // sum up all of the lines
                // the integers are written in the file as strings so you have to convert them
                // back to integers again
                int nextNum = Integer.parseInt(inputFile.nextLine());
                sum = sum + nextNum;
            }
            System.out.println(sum);
            inputFile.close();

            if (fileName.equals("done"))
                done = true;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...