0

В этом куске кода у меня сохраняются данные в файл формата txt,которые я ввожу через консоль,но у меня строка "enter your name" пропускается и сразу идет вторая.Почему?Как зафиксить?

case '1':
      System.out.println("Enter your name:");
      String m = scan.nextLine();
      x.write(m);
      System.out.println("Enter your surname:");
      String m1 = scan.nextLine();
      x.write(m1);
      System.out.println("Enter your salary:");
      String m2 = scan.nextLine();
      x.write(m2);
      break;
  • 1
    У Java кажется какие-то тупые проблем с консольным буфером на винде. По моим ощущениям, работает вообще не так как в других языках. Поробуйте сделать System.out.flush() сразу после prinln(). – bearpro Aug 26 '20 at 11:32
  • 1
    Попробуйте добавить полностью компилируемый пример, а также логи и файл на выходе. Источником ошибки может быть код, который Вы не показали. Также неплохо было бы знать версию и сборку джавы и на какой оси запускаете. – Ramiz Aug 26 '20 at 11:38
  • @bearpro ,не помогло – Человек Aug 26 '20 at 11:43
  • @Человек а перед приведённым фрагментом вы что-нибудь пишете в out? – bearpro Aug 26 '20 at 11:51
  • если вы перед этим считывали числа через nextInt и подобное, то в потоке остался символ перевода строки, который и съедает nextLine https://ru.stackoverflow.com/questions/499681/%d0%9e%d1%81%d0%be%d0%b1%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-scanner-nextline https://ru.stackoverflow.com/questions/526818/scanner-%d0%bd%d0%b5-%d1%81%d1%87%d0%b8%d1%82%d1%8b%d0%b2%d0%b0%d0%b5%d1%82-%d1%81%d1%82%d1%80%d0%be%d0%ba%d1%83-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-nextint – IR42 Aug 26 '20 at 11:57
  • @IR42 ,числа считывал,но через System.in.read(); – Человек Aug 26 '20 at 12:01
  • read вообще считывает только один символ за раз и если scan использует System.in, то тут явно проблема в том, что в потоке висят лишние символы, используйте nextLine после функций, которые могут оставить лишние символы в потоке – IR42 Aug 26 '20 at 12:08
  • @IR42, проблему исправил добавив еще одну строку String m = scan.nextLine();,но это не дело,а метод flush() про который мне сказали выше ,не сработал – Человек Aug 26 '20 at 12:22

0 Answers0