Java scanner not working expectedly in loop [duplicate]












-1
















This question already has an answer here:




  • Scanner is skipping nextLine() after using next() or nextFoo()?

    15 answers




I am writing a program to delete one of the field from a tab separated input table. And I need the user to give me the position of the field which they wish to delete.



I want to keep asking for the number until it is valid so I wrote the following code (which is the code that I think caused problem):



  boolean validPos = false;
int pos = -1;
while(!validPos){
System.out.print(
"Please enter the postion of the field you want to delete: ");
try{
//index is 1 less than the number so - 1
pos = ask.nextInt() - 1;
}catch(InputMismatchException imE){
System.err.println(imE);
System.out.println("Please enter a valid positive integer");
}
if(pos <= 0){
System.out.println("Enter number is less than 1");
}else{
validPos = true;
}//ifelse
}//while


And when I entered an invalid input when it asked,
it keeps on printing the same thing non-stop:



$ java DeleteField
Leave empty if you want to manually enter input
Please enter the name of input file:
Leave empty if you want to show the output here
Please enter the name of the output file:
Please enter the postion of the field you want to delete: q
java.util.InputMismatchException
Please enter a valid positive integer
Enter number is less than 1
Please enter the postion of the field you want to delete: java.util.InputMismatchException
Please enter a valid positive integer
Enter number is less than 1
Please enter the postion of the field you want to delete: java.util.InputMismatchException
Please enter a valid positive integer
Enter number is less than 1
Please enter the postion of the field you want to delete: java.util.InputMismatchException
Please enter a valid positive integer
Enter number is less than 1
Please enter the postion of the field you want to delete: java.util.InputMismatchException


.... and so on printing forever...
It seems like the code



pos = ask.nextInt() - 1;  


did not stop and asked for an input,
May I know what happened? Thanks alot



And if you want to see the full code :



//this program input a tab separated table
//and delete one of the field according to input number
//note: if input number is more than integer range it wont work

import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.File;
import java.io.InputStreamReader;
import java.util.InputMismatchException;

public class DeleteField{
public static void main(String args) {
BufferedReader reader = null;
PrintWriter writer = null;
Scanner ask = new Scanner(System.in);
boolean standardInput = false;
boolean standardOutput = false;
File inFile = null;
File outFile = null;

try{
boolean validInFile = false;
while(!validInFile){
System.out.println("Leave empty if you want to manually enter input");
System.out.print("Please enter the name of input file: ");
String inFileString = ask.nextLine();
inFile = new File(inFileString);
if(inFileString.equals("")){
standardInput = validInFile = true;
}else if(!inFile.exists()){
System.out.println("This file does not exists, please enter again");
}else{
validInFile = true;
}//ifelse
}//while

boolean validOutFile = false;
while(!validOutFile){
System.out.println("Leave empty if you want to show the output here");
System.out.print("Please enter the name of the output file: ");
String outFileString = ask.nextLine();
outFile = new File(outFileString);
if(outFileString.equals("")){
standardOutput = validOutFile = true;
}else if(outFile.exists()){
boolean validAns = false;
while(!validAns){
System.out.print("File already exists, override it? (y/n): ");
String ans = ask.nextLine();
if(ans.equals("y")){
validAns = validOutFile = true;
}else if(ans.equals("n")){
standardOutput = validAns = true;
}else{
System.out.println("Please supply valid answer");
}//else
}//while
}else{
validOutFile = true;
}//else
}//while
/////////////////////////////////////////////////////////////////
//The code I think with problem:
boolean validPos = false;
int pos = -1;
while(!validPos){
System.out.print(
"Please enter the postion of the field you want to delete: ");
try{
pos = ask.nextInt() - 1;
}catch(InputMismatchException imE){
System.err.println(imE);
System.out.println("Please enter a valid positive integer");
}
if(pos <= 0){
System.out.println("Enter number is less than 1");
}else{
validPos = true;
}//ifelse
}//while

/////////////////////////////////////////////////////////////////
if(standardInput){
reader = new BufferedReader(new InputStreamReader(System.in));
}else{
reader = new BufferedReader(new FileReader(inFile));
}

if(!standardOutput){
writer = new PrintWriter(new FileWriter(outFile));
}

String currLine;
String res = "";//result
boolean deleted = false;
final String NLS = System.getProperty("line.separator");
//read linebyline from input
//if pos == index then skip
//else paste each words of the line into result
while((currLine = reader.readLine()) != null){
String currLineArray = currLine.split("t");
for(int index = 0; index < currLineArray.length; index++){
if(index != pos){
res += currLineArray[index] + "t";
}else{//if we deleted something
deleted = true;
}//if
}//for
res += NLS;
}//while

//output result
if(standardOutput){
System.out.println(res);
}else{
writer.write(res);
}
if(!deleted){
writer.write("Note: You did not delete any field");
}//if

}catch(IllegalArgumentException illE){
System.err.println("Error: " + illE.getMessage());
System.out.println(
"Please try again with argument as inFile outFile integer");
// }catch(IOException ioE){
// System.err.println("Error: " + ioE.getMessage());
}catch(Exception e){
System.err.println(e);
System.err.println("Something unforseen happened...");
}finally{
try{
if(reader != null) reader.close();
}catch(IOException ioe){
System.out.println("Error while closing file");
System.err.println(ioe);
}catch(Exception e){
System.out.println(
"Something unforeseen happened during closing file");
System.err.println(e);
}
if(writer != null){
writer.close();
if(writer.checkError())
System.err.println("Something went wrong with the output");
}
}//trycatchfinally
}//main
}//class









share|improve this question













marked as duplicate by Arnaud, khelwood java
Users with the  java badge can single-handedly close java questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Jan 3 at 15:42


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.























    -1
















    This question already has an answer here:




    • Scanner is skipping nextLine() after using next() or nextFoo()?

      15 answers




    I am writing a program to delete one of the field from a tab separated input table. And I need the user to give me the position of the field which they wish to delete.



    I want to keep asking for the number until it is valid so I wrote the following code (which is the code that I think caused problem):



      boolean validPos = false;
    int pos = -1;
    while(!validPos){
    System.out.print(
    "Please enter the postion of the field you want to delete: ");
    try{
    //index is 1 less than the number so - 1
    pos = ask.nextInt() - 1;
    }catch(InputMismatchException imE){
    System.err.println(imE);
    System.out.println("Please enter a valid positive integer");
    }
    if(pos <= 0){
    System.out.println("Enter number is less than 1");
    }else{
    validPos = true;
    }//ifelse
    }//while


    And when I entered an invalid input when it asked,
    it keeps on printing the same thing non-stop:



    $ java DeleteField
    Leave empty if you want to manually enter input
    Please enter the name of input file:
    Leave empty if you want to show the output here
    Please enter the name of the output file:
    Please enter the postion of the field you want to delete: q
    java.util.InputMismatchException
    Please enter a valid positive integer
    Enter number is less than 1
    Please enter the postion of the field you want to delete: java.util.InputMismatchException
    Please enter a valid positive integer
    Enter number is less than 1
    Please enter the postion of the field you want to delete: java.util.InputMismatchException
    Please enter a valid positive integer
    Enter number is less than 1
    Please enter the postion of the field you want to delete: java.util.InputMismatchException
    Please enter a valid positive integer
    Enter number is less than 1
    Please enter the postion of the field you want to delete: java.util.InputMismatchException


    .... and so on printing forever...
    It seems like the code



    pos = ask.nextInt() - 1;  


    did not stop and asked for an input,
    May I know what happened? Thanks alot



    And if you want to see the full code :



    //this program input a tab separated table
    //and delete one of the field according to input number
    //note: if input number is more than integer range it wont work

    import java.io.IOException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.BufferedReader;
    import java.io.PrintWriter;
    import java.util.Scanner;
    import java.io.File;
    import java.io.InputStreamReader;
    import java.util.InputMismatchException;

    public class DeleteField{
    public static void main(String args) {
    BufferedReader reader = null;
    PrintWriter writer = null;
    Scanner ask = new Scanner(System.in);
    boolean standardInput = false;
    boolean standardOutput = false;
    File inFile = null;
    File outFile = null;

    try{
    boolean validInFile = false;
    while(!validInFile){
    System.out.println("Leave empty if you want to manually enter input");
    System.out.print("Please enter the name of input file: ");
    String inFileString = ask.nextLine();
    inFile = new File(inFileString);
    if(inFileString.equals("")){
    standardInput = validInFile = true;
    }else if(!inFile.exists()){
    System.out.println("This file does not exists, please enter again");
    }else{
    validInFile = true;
    }//ifelse
    }//while

    boolean validOutFile = false;
    while(!validOutFile){
    System.out.println("Leave empty if you want to show the output here");
    System.out.print("Please enter the name of the output file: ");
    String outFileString = ask.nextLine();
    outFile = new File(outFileString);
    if(outFileString.equals("")){
    standardOutput = validOutFile = true;
    }else if(outFile.exists()){
    boolean validAns = false;
    while(!validAns){
    System.out.print("File already exists, override it? (y/n): ");
    String ans = ask.nextLine();
    if(ans.equals("y")){
    validAns = validOutFile = true;
    }else if(ans.equals("n")){
    standardOutput = validAns = true;
    }else{
    System.out.println("Please supply valid answer");
    }//else
    }//while
    }else{
    validOutFile = true;
    }//else
    }//while
    /////////////////////////////////////////////////////////////////
    //The code I think with problem:
    boolean validPos = false;
    int pos = -1;
    while(!validPos){
    System.out.print(
    "Please enter the postion of the field you want to delete: ");
    try{
    pos = ask.nextInt() - 1;
    }catch(InputMismatchException imE){
    System.err.println(imE);
    System.out.println("Please enter a valid positive integer");
    }
    if(pos <= 0){
    System.out.println("Enter number is less than 1");
    }else{
    validPos = true;
    }//ifelse
    }//while

    /////////////////////////////////////////////////////////////////
    if(standardInput){
    reader = new BufferedReader(new InputStreamReader(System.in));
    }else{
    reader = new BufferedReader(new FileReader(inFile));
    }

    if(!standardOutput){
    writer = new PrintWriter(new FileWriter(outFile));
    }

    String currLine;
    String res = "";//result
    boolean deleted = false;
    final String NLS = System.getProperty("line.separator");
    //read linebyline from input
    //if pos == index then skip
    //else paste each words of the line into result
    while((currLine = reader.readLine()) != null){
    String currLineArray = currLine.split("t");
    for(int index = 0; index < currLineArray.length; index++){
    if(index != pos){
    res += currLineArray[index] + "t";
    }else{//if we deleted something
    deleted = true;
    }//if
    }//for
    res += NLS;
    }//while

    //output result
    if(standardOutput){
    System.out.println(res);
    }else{
    writer.write(res);
    }
    if(!deleted){
    writer.write("Note: You did not delete any field");
    }//if

    }catch(IllegalArgumentException illE){
    System.err.println("Error: " + illE.getMessage());
    System.out.println(
    "Please try again with argument as inFile outFile integer");
    // }catch(IOException ioE){
    // System.err.println("Error: " + ioE.getMessage());
    }catch(Exception e){
    System.err.println(e);
    System.err.println("Something unforseen happened...");
    }finally{
    try{
    if(reader != null) reader.close();
    }catch(IOException ioe){
    System.out.println("Error while closing file");
    System.err.println(ioe);
    }catch(Exception e){
    System.out.println(
    "Something unforeseen happened during closing file");
    System.err.println(e);
    }
    if(writer != null){
    writer.close();
    if(writer.checkError())
    System.err.println("Something went wrong with the output");
    }
    }//trycatchfinally
    }//main
    }//class









    share|improve this question













    marked as duplicate by Arnaud, khelwood java
    Users with the  java badge can single-handedly close java questions as duplicates and reopen them as needed.

    StackExchange.ready(function() {
    if (StackExchange.options.isMobile) return;

    $('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
    var $hover = $(this).addClass('hover-bound'),
    $msg = $hover.siblings('.dupe-hammer-message');

    $hover.hover(
    function() {
    $hover.showInfoMessage('', {
    messageElement: $msg.clone().show(),
    transient: false,
    position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
    dismissable: false,
    relativeToBody: true
    });
    },
    function() {
    StackExchange.helpers.removeMessages();
    }
    );
    });
    });
    Jan 3 at 15:42


    This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





















      -1












      -1








      -1









      This question already has an answer here:




      • Scanner is skipping nextLine() after using next() or nextFoo()?

        15 answers




      I am writing a program to delete one of the field from a tab separated input table. And I need the user to give me the position of the field which they wish to delete.



      I want to keep asking for the number until it is valid so I wrote the following code (which is the code that I think caused problem):



        boolean validPos = false;
      int pos = -1;
      while(!validPos){
      System.out.print(
      "Please enter the postion of the field you want to delete: ");
      try{
      //index is 1 less than the number so - 1
      pos = ask.nextInt() - 1;
      }catch(InputMismatchException imE){
      System.err.println(imE);
      System.out.println("Please enter a valid positive integer");
      }
      if(pos <= 0){
      System.out.println("Enter number is less than 1");
      }else{
      validPos = true;
      }//ifelse
      }//while


      And when I entered an invalid input when it asked,
      it keeps on printing the same thing non-stop:



      $ java DeleteField
      Leave empty if you want to manually enter input
      Please enter the name of input file:
      Leave empty if you want to show the output here
      Please enter the name of the output file:
      Please enter the postion of the field you want to delete: q
      java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException


      .... and so on printing forever...
      It seems like the code



      pos = ask.nextInt() - 1;  


      did not stop and asked for an input,
      May I know what happened? Thanks alot



      And if you want to see the full code :



      //this program input a tab separated table
      //and delete one of the field according to input number
      //note: if input number is more than integer range it wont work

      import java.io.IOException;
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.BufferedReader;
      import java.io.PrintWriter;
      import java.util.Scanner;
      import java.io.File;
      import java.io.InputStreamReader;
      import java.util.InputMismatchException;

      public class DeleteField{
      public static void main(String args) {
      BufferedReader reader = null;
      PrintWriter writer = null;
      Scanner ask = new Scanner(System.in);
      boolean standardInput = false;
      boolean standardOutput = false;
      File inFile = null;
      File outFile = null;

      try{
      boolean validInFile = false;
      while(!validInFile){
      System.out.println("Leave empty if you want to manually enter input");
      System.out.print("Please enter the name of input file: ");
      String inFileString = ask.nextLine();
      inFile = new File(inFileString);
      if(inFileString.equals("")){
      standardInput = validInFile = true;
      }else if(!inFile.exists()){
      System.out.println("This file does not exists, please enter again");
      }else{
      validInFile = true;
      }//ifelse
      }//while

      boolean validOutFile = false;
      while(!validOutFile){
      System.out.println("Leave empty if you want to show the output here");
      System.out.print("Please enter the name of the output file: ");
      String outFileString = ask.nextLine();
      outFile = new File(outFileString);
      if(outFileString.equals("")){
      standardOutput = validOutFile = true;
      }else if(outFile.exists()){
      boolean validAns = false;
      while(!validAns){
      System.out.print("File already exists, override it? (y/n): ");
      String ans = ask.nextLine();
      if(ans.equals("y")){
      validAns = validOutFile = true;
      }else if(ans.equals("n")){
      standardOutput = validAns = true;
      }else{
      System.out.println("Please supply valid answer");
      }//else
      }//while
      }else{
      validOutFile = true;
      }//else
      }//while
      /////////////////////////////////////////////////////////////////
      //The code I think with problem:
      boolean validPos = false;
      int pos = -1;
      while(!validPos){
      System.out.print(
      "Please enter the postion of the field you want to delete: ");
      try{
      pos = ask.nextInt() - 1;
      }catch(InputMismatchException imE){
      System.err.println(imE);
      System.out.println("Please enter a valid positive integer");
      }
      if(pos <= 0){
      System.out.println("Enter number is less than 1");
      }else{
      validPos = true;
      }//ifelse
      }//while

      /////////////////////////////////////////////////////////////////
      if(standardInput){
      reader = new BufferedReader(new InputStreamReader(System.in));
      }else{
      reader = new BufferedReader(new FileReader(inFile));
      }

      if(!standardOutput){
      writer = new PrintWriter(new FileWriter(outFile));
      }

      String currLine;
      String res = "";//result
      boolean deleted = false;
      final String NLS = System.getProperty("line.separator");
      //read linebyline from input
      //if pos == index then skip
      //else paste each words of the line into result
      while((currLine = reader.readLine()) != null){
      String currLineArray = currLine.split("t");
      for(int index = 0; index < currLineArray.length; index++){
      if(index != pos){
      res += currLineArray[index] + "t";
      }else{//if we deleted something
      deleted = true;
      }//if
      }//for
      res += NLS;
      }//while

      //output result
      if(standardOutput){
      System.out.println(res);
      }else{
      writer.write(res);
      }
      if(!deleted){
      writer.write("Note: You did not delete any field");
      }//if

      }catch(IllegalArgumentException illE){
      System.err.println("Error: " + illE.getMessage());
      System.out.println(
      "Please try again with argument as inFile outFile integer");
      // }catch(IOException ioE){
      // System.err.println("Error: " + ioE.getMessage());
      }catch(Exception e){
      System.err.println(e);
      System.err.println("Something unforseen happened...");
      }finally{
      try{
      if(reader != null) reader.close();
      }catch(IOException ioe){
      System.out.println("Error while closing file");
      System.err.println(ioe);
      }catch(Exception e){
      System.out.println(
      "Something unforeseen happened during closing file");
      System.err.println(e);
      }
      if(writer != null){
      writer.close();
      if(writer.checkError())
      System.err.println("Something went wrong with the output");
      }
      }//trycatchfinally
      }//main
      }//class









      share|improve this question















      This question already has an answer here:




      • Scanner is skipping nextLine() after using next() or nextFoo()?

        15 answers




      I am writing a program to delete one of the field from a tab separated input table. And I need the user to give me the position of the field which they wish to delete.



      I want to keep asking for the number until it is valid so I wrote the following code (which is the code that I think caused problem):



        boolean validPos = false;
      int pos = -1;
      while(!validPos){
      System.out.print(
      "Please enter the postion of the field you want to delete: ");
      try{
      //index is 1 less than the number so - 1
      pos = ask.nextInt() - 1;
      }catch(InputMismatchException imE){
      System.err.println(imE);
      System.out.println("Please enter a valid positive integer");
      }
      if(pos <= 0){
      System.out.println("Enter number is less than 1");
      }else{
      validPos = true;
      }//ifelse
      }//while


      And when I entered an invalid input when it asked,
      it keeps on printing the same thing non-stop:



      $ java DeleteField
      Leave empty if you want to manually enter input
      Please enter the name of input file:
      Leave empty if you want to show the output here
      Please enter the name of the output file:
      Please enter the postion of the field you want to delete: q
      java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException
      Please enter a valid positive integer
      Enter number is less than 1
      Please enter the postion of the field you want to delete: java.util.InputMismatchException


      .... and so on printing forever...
      It seems like the code



      pos = ask.nextInt() - 1;  


      did not stop and asked for an input,
      May I know what happened? Thanks alot



      And if you want to see the full code :



      //this program input a tab separated table
      //and delete one of the field according to input number
      //note: if input number is more than integer range it wont work

      import java.io.IOException;
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.BufferedReader;
      import java.io.PrintWriter;
      import java.util.Scanner;
      import java.io.File;
      import java.io.InputStreamReader;
      import java.util.InputMismatchException;

      public class DeleteField{
      public static void main(String args) {
      BufferedReader reader = null;
      PrintWriter writer = null;
      Scanner ask = new Scanner(System.in);
      boolean standardInput = false;
      boolean standardOutput = false;
      File inFile = null;
      File outFile = null;

      try{
      boolean validInFile = false;
      while(!validInFile){
      System.out.println("Leave empty if you want to manually enter input");
      System.out.print("Please enter the name of input file: ");
      String inFileString = ask.nextLine();
      inFile = new File(inFileString);
      if(inFileString.equals("")){
      standardInput = validInFile = true;
      }else if(!inFile.exists()){
      System.out.println("This file does not exists, please enter again");
      }else{
      validInFile = true;
      }//ifelse
      }//while

      boolean validOutFile = false;
      while(!validOutFile){
      System.out.println("Leave empty if you want to show the output here");
      System.out.print("Please enter the name of the output file: ");
      String outFileString = ask.nextLine();
      outFile = new File(outFileString);
      if(outFileString.equals("")){
      standardOutput = validOutFile = true;
      }else if(outFile.exists()){
      boolean validAns = false;
      while(!validAns){
      System.out.print("File already exists, override it? (y/n): ");
      String ans = ask.nextLine();
      if(ans.equals("y")){
      validAns = validOutFile = true;
      }else if(ans.equals("n")){
      standardOutput = validAns = true;
      }else{
      System.out.println("Please supply valid answer");
      }//else
      }//while
      }else{
      validOutFile = true;
      }//else
      }//while
      /////////////////////////////////////////////////////////////////
      //The code I think with problem:
      boolean validPos = false;
      int pos = -1;
      while(!validPos){
      System.out.print(
      "Please enter the postion of the field you want to delete: ");
      try{
      pos = ask.nextInt() - 1;
      }catch(InputMismatchException imE){
      System.err.println(imE);
      System.out.println("Please enter a valid positive integer");
      }
      if(pos <= 0){
      System.out.println("Enter number is less than 1");
      }else{
      validPos = true;
      }//ifelse
      }//while

      /////////////////////////////////////////////////////////////////
      if(standardInput){
      reader = new BufferedReader(new InputStreamReader(System.in));
      }else{
      reader = new BufferedReader(new FileReader(inFile));
      }

      if(!standardOutput){
      writer = new PrintWriter(new FileWriter(outFile));
      }

      String currLine;
      String res = "";//result
      boolean deleted = false;
      final String NLS = System.getProperty("line.separator");
      //read linebyline from input
      //if pos == index then skip
      //else paste each words of the line into result
      while((currLine = reader.readLine()) != null){
      String currLineArray = currLine.split("t");
      for(int index = 0; index < currLineArray.length; index++){
      if(index != pos){
      res += currLineArray[index] + "t";
      }else{//if we deleted something
      deleted = true;
      }//if
      }//for
      res += NLS;
      }//while

      //output result
      if(standardOutput){
      System.out.println(res);
      }else{
      writer.write(res);
      }
      if(!deleted){
      writer.write("Note: You did not delete any field");
      }//if

      }catch(IllegalArgumentException illE){
      System.err.println("Error: " + illE.getMessage());
      System.out.println(
      "Please try again with argument as inFile outFile integer");
      // }catch(IOException ioE){
      // System.err.println("Error: " + ioE.getMessage());
      }catch(Exception e){
      System.err.println(e);
      System.err.println("Something unforseen happened...");
      }finally{
      try{
      if(reader != null) reader.close();
      }catch(IOException ioe){
      System.out.println("Error while closing file");
      System.err.println(ioe);
      }catch(Exception e){
      System.out.println(
      "Something unforeseen happened during closing file");
      System.err.println(e);
      }
      if(writer != null){
      writer.close();
      if(writer.checkError())
      System.err.println("Something went wrong with the output");
      }
      }//trycatchfinally
      }//main
      }//class




      This question already has an answer here:




      • Scanner is skipping nextLine() after using next() or nextFoo()?

        15 answers








      java






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 3 at 15:38









      KallzvxKallzvx

      154




      154




      marked as duplicate by Arnaud, khelwood java
      Users with the  java badge can single-handedly close java questions as duplicates and reopen them as needed.

      StackExchange.ready(function() {
      if (StackExchange.options.isMobile) return;

      $('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
      var $hover = $(this).addClass('hover-bound'),
      $msg = $hover.siblings('.dupe-hammer-message');

      $hover.hover(
      function() {
      $hover.showInfoMessage('', {
      messageElement: $msg.clone().show(),
      transient: false,
      position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
      dismissable: false,
      relativeToBody: true
      });
      },
      function() {
      StackExchange.helpers.removeMessages();
      }
      );
      });
      });
      Jan 3 at 15:42


      This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









      marked as duplicate by Arnaud, khelwood java
      Users with the  java badge can single-handedly close java questions as duplicates and reopen them as needed.

      StackExchange.ready(function() {
      if (StackExchange.options.isMobile) return;

      $('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
      var $hover = $(this).addClass('hover-bound'),
      $msg = $hover.siblings('.dupe-hammer-message');

      $hover.hover(
      function() {
      $hover.showInfoMessage('', {
      messageElement: $msg.clone().show(),
      transient: false,
      position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
      dismissable: false,
      relativeToBody: true
      });
      },
      function() {
      StackExchange.helpers.removeMessages();
      }
      );
      });
      });
      Jan 3 at 15:42


      This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


























          1 Answer
          1






          active

          oldest

          votes


















          0














          Try using Integer.parseInt(ask.nextLine()) instead of ask.nextInt(). Scanner.nextInt method does not read the newline character when you press enter






          share|improve this answer






























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            Try using Integer.parseInt(ask.nextLine()) instead of ask.nextInt(). Scanner.nextInt method does not read the newline character when you press enter






            share|improve this answer




























              0














              Try using Integer.parseInt(ask.nextLine()) instead of ask.nextInt(). Scanner.nextInt method does not read the newline character when you press enter






              share|improve this answer


























                0












                0








                0







                Try using Integer.parseInt(ask.nextLine()) instead of ask.nextInt(). Scanner.nextInt method does not read the newline character when you press enter






                share|improve this answer













                Try using Integer.parseInt(ask.nextLine()) instead of ask.nextInt(). Scanner.nextInt method does not read the newline character when you press enter







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 3 at 15:42









                SandSand

                1,7193822




                1,7193822

















                    Popular posts from this blog

                    Mossoró

                    Can't read property showImagePicker of undefined in react native iOS

                    Pushsharp Apns notification error: 'InvalidToken'