Сохранение строки и пользовательский ввод в строку?Следующее дает ошибку - PullRequest
0 голосов
/ 26 июня 2018

Как сохранить строку и пользовательский ввод в строку? Следующее дает ошибку. Как мне это решить. Вероятно, есть больше ошибок. А что такое «Незакрытый строковый литерал» на Java.

//Scanner sc = new Scanner(System.in);
//String userInput = sc.nextLine();
//String combining = "hey"+userInput;
//System.out.println(combining);

    import java.io.*;
    import java.util.*;
    public class FileWrite
    {
       public static void main(String[] args)
       {
        String input = null, file, fileName = null;

        try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in)))
            {
            System.out.println("Enter the file name you wish to write the data");
            System.out.println("==============================================");
            Scanner sc = new Scanner(System.in);
                    fileName = sc.nextLine();           //accepting the name of the file
                    file = "C:\"+fileName+".txt";       //error line
                    file.readLine();                    //will this work?
            System.out.println("Enter your data");
            System.out.println("==============================================");
                System.out.println("");
            System.out.println("");
            do
            {
                input = br.readLine();                //accepting the data to write in the file
                if(input.toLowerCase().equals("end"))  //end to terminate the program
                            {
                    break;
                }
                else
                {
                    try(BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)))
                    {
                        bw.write(input);
                        bw.newLine();
                    }
                    catch(IOException e)
                    {
                        System.out.println(e);
                        System.exit(0); 
                    }
                }
            }while(input != null);  
            }catch(Exception ex)
         {
                System.out.println(ex);
                    System.exit(0);   
             }
       }
    }

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я думаю, что приведенные ниже коды помогут вам написать много строк в новый файл.


import java.io.*;
    //we did not use the classes of java.util package so let me remove it;
public class FileWrite1 {


    public static void main(String[] args) {

        //we will use file name in File class so let me remove String file
        String input = null, fileName = null;

        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            System.out.println("Enter the file name you wish to write the data");
            System.out.println("==============================================");
            //Scanner class does not need because you have already use BufferedReader class
            //Scanner sc = new Scanner(System.in);
            //So, if you have BufferedReader class, let's use it below
            fileName = br.readLine();           //accepting the name of the file
            //if you want to create a new file using the name "fileName", you should use the class File.
            File file = new File("D:\\" + fileName + ".txt");

            //code in below is not necessary because of File class
            //file = "C:\"+fileName+".txt";       //error line

            //code in below will not work, because String file is not from BufferedReader class on your code, so let me take it to comment
            //file.readLine();                    //will this work?
            System.out.println("Enter your data");
            System.out.println("==============================================");
            System.out.println("");
            System.out.println("");

            do {
                input = br.readLine();                //accepting the data to write in the file
                if (input.toLowerCase().equals("end")) {  //end to terminate the program
                    break;
                } else {
                    // inside FileWriter object, you should use the object name of File Class, not String file
                    try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, true))) {
                        bw.write(input);
                        bw.newLine();
                    } catch (IOException e) {
                        System.out.println(e);
                        System.exit(0);
                    }
                }
            } while (input != null);
        } catch (Exception ex) {
            System.out.println(ex);
            System.exit(0);
        }
    }
}

Позвольте мне объяснить.

  1. Во-первых, если у нас есть BufferedReader класс, мы можем использовать его, чтобы получить входные данные, поэтому мы не должны включать классы java.util пакета в ваш код.
  2. Тогда String file не нужно. Потому что мы будем использовать file имя в File классе. Итак, оставим это в будущем.
  3. Как уже упоминалось, если у нас есть класс BufferedReader, мы сможем получить входы, давайте использовать его: fileName = br.readLine();
  4. Если вы хотите записать входные данные в новый файл, вы должны вызвать класс File так:

    File file = new File("D:\\" + fileName + ".txt");
    

    D: \ - имя диска, fileName - имя нового файла, созданного на D диск и .txt - это расширение файла.

  5. file.readLine (); не будет работать, потому что в вашем коде файл String не из класса BufferedReader.

  6. внутри объекта FileWriter, вы должны использовать имя объекта File Класс, не строковый файл

Запустите этот код в вашей IDE. Не забудьте изменить расположение файла в классе File, в моем случае это было в D: \ drive.

0 голосов
/ 26 июня 2018

Там написано Unclosed String literal. И, вероятно, есть еще несколько ошибок.

    import java.io.*;
    import java.util.*;
    public class FileWrite
    {


       public static void main(String[] args)
       {
        String input = null, file, fileName = null;

        try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in)))
            {
            System.out.println("Enter the file name you wish to write the data");
            System.out.println("==============================================");
            Scanner sc = new Scanner(System.in);
                    fileName = sc.nextLine();
                    file = "C:\"+fileName+".txt";
                    file.readLine();
            System.out.println("Enter your data");
            System.out.println("Enter end to terminate");
            System.out.println("==============================================");
                System.out.println("");
            System.out.println("");
            do
            {
                input = br.readLine();
                if(input.toLowerCase().equals("end"))
                            {
                    break;
                }
                else
                {
                    try(BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)))
                    {
                        bw.write(input);
                        bw.newLine();
                    }
                    catch(IOException e)
                    {
                        System.out.println(e);
                        System.exit(0); 
                    }
                }
            }while(input != null);  
            }catch(Exception ex)
         {
                System.out.println(ex);
                    System.exit(0);   
             }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...