If an invalid input is entered during an iteration of a loop, how do I get the loop to start again at its current iteration










-1















I am new to programming and am working on a Java assignment where a user names a file. The file is then passed to a method for the user to write in test grades, then passed to another method to read and display the test grades with the class average.



I am currently working on the method to write the students grades to the file which I have successfully done, but I need to implement error checking if a non numeric value is entered. I used a while loop with try and catch for InputMismatchException, the loop works, sometimes. If an invalid input is entered on a the loops first iteration it will catch it and reiterate, however if an invalid input is entered on any other iteration besides the first it will catch the InputMismatchException, but it will also break out of the loop and continue to the next method. How would I get the loop to start at the iteration of the loop that was invalid. I would appreciate any help, and I am sorry if my code is poorly written as I am very new to programming.



Here is the method I am working on:



 public static void inputScores(String newFile) 

Scanner scan = new Scanner(System.in);
Formatter write;

try

write = new Formatter(newFile +".txt");

double score = 0.0;
int count = 1;
boolean again = false;


while(!again)
try

while(score >= 0)

System.out.print("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
again = true;
count++;

if(score >= 0)

write.format("%.2f%n", score);

else if(score <= -1)

break;



catch(InputMismatchException ex)
System.out.println("Invalid input, Student's scores must be a number");
scan.next();


write.close();


catch(FileNotFoundException e)

System.out.println(e.getMessage());











share|improve this question






















  • catch(InputMismatchException ex) again = false; ?

    – fantaghirocco
    Nov 14 '18 at 17:20















-1















I am new to programming and am working on a Java assignment where a user names a file. The file is then passed to a method for the user to write in test grades, then passed to another method to read and display the test grades with the class average.



I am currently working on the method to write the students grades to the file which I have successfully done, but I need to implement error checking if a non numeric value is entered. I used a while loop with try and catch for InputMismatchException, the loop works, sometimes. If an invalid input is entered on a the loops first iteration it will catch it and reiterate, however if an invalid input is entered on any other iteration besides the first it will catch the InputMismatchException, but it will also break out of the loop and continue to the next method. How would I get the loop to start at the iteration of the loop that was invalid. I would appreciate any help, and I am sorry if my code is poorly written as I am very new to programming.



Here is the method I am working on:



 public static void inputScores(String newFile) 

Scanner scan = new Scanner(System.in);
Formatter write;

try

write = new Formatter(newFile +".txt");

double score = 0.0;
int count = 1;
boolean again = false;


while(!again)
try

while(score >= 0)

System.out.print("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
again = true;
count++;

if(score >= 0)

write.format("%.2f%n", score);

else if(score <= -1)

break;



catch(InputMismatchException ex)
System.out.println("Invalid input, Student's scores must be a number");
scan.next();


write.close();


catch(FileNotFoundException e)

System.out.println(e.getMessage());











share|improve this question






















  • catch(InputMismatchException ex) again = false; ?

    – fantaghirocco
    Nov 14 '18 at 17:20













-1












-1








-1


0






I am new to programming and am working on a Java assignment where a user names a file. The file is then passed to a method for the user to write in test grades, then passed to another method to read and display the test grades with the class average.



I am currently working on the method to write the students grades to the file which I have successfully done, but I need to implement error checking if a non numeric value is entered. I used a while loop with try and catch for InputMismatchException, the loop works, sometimes. If an invalid input is entered on a the loops first iteration it will catch it and reiterate, however if an invalid input is entered on any other iteration besides the first it will catch the InputMismatchException, but it will also break out of the loop and continue to the next method. How would I get the loop to start at the iteration of the loop that was invalid. I would appreciate any help, and I am sorry if my code is poorly written as I am very new to programming.



Here is the method I am working on:



 public static void inputScores(String newFile) 

Scanner scan = new Scanner(System.in);
Formatter write;

try

write = new Formatter(newFile +".txt");

double score = 0.0;
int count = 1;
boolean again = false;


while(!again)
try

while(score >= 0)

System.out.print("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
again = true;
count++;

if(score >= 0)

write.format("%.2f%n", score);

else if(score <= -1)

break;



catch(InputMismatchException ex)
System.out.println("Invalid input, Student's scores must be a number");
scan.next();


write.close();


catch(FileNotFoundException e)

System.out.println(e.getMessage());











share|improve this question














I am new to programming and am working on a Java assignment where a user names a file. The file is then passed to a method for the user to write in test grades, then passed to another method to read and display the test grades with the class average.



I am currently working on the method to write the students grades to the file which I have successfully done, but I need to implement error checking if a non numeric value is entered. I used a while loop with try and catch for InputMismatchException, the loop works, sometimes. If an invalid input is entered on a the loops first iteration it will catch it and reiterate, however if an invalid input is entered on any other iteration besides the first it will catch the InputMismatchException, but it will also break out of the loop and continue to the next method. How would I get the loop to start at the iteration of the loop that was invalid. I would appreciate any help, and I am sorry if my code is poorly written as I am very new to programming.



Here is the method I am working on:



 public static void inputScores(String newFile) 

Scanner scan = new Scanner(System.in);
Formatter write;

try

write = new Formatter(newFile +".txt");

double score = 0.0;
int count = 1;
boolean again = false;


while(!again)
try

while(score >= 0)

System.out.print("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
again = true;
count++;

if(score >= 0)

write.format("%.2f%n", score);

else if(score <= -1)

break;



catch(InputMismatchException ex)
System.out.println("Invalid input, Student's scores must be a number");
scan.next();


write.close();


catch(FileNotFoundException e)

System.out.println(e.getMessage());








java while-loop iteration try-catch inputmismatchexception






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 16:48









EiffelFlowersEiffelFlowers

31




31












  • catch(InputMismatchException ex) again = false; ?

    – fantaghirocco
    Nov 14 '18 at 17:20

















  • catch(InputMismatchException ex) again = false; ?

    – fantaghirocco
    Nov 14 '18 at 17:20
















catch(InputMismatchException ex) again = false; ?

– fantaghirocco
Nov 14 '18 at 17:20





catch(InputMismatchException ex) again = false; ?

– fantaghirocco
Nov 14 '18 at 17:20












1 Answer
1






active

oldest

votes


















0















Try this code. Hope this will fulfill your requirement.




 public static void inputScores(String newFile) 
Scanner scan = new Scanner(System.in);
Formatter write=null;
try
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true)
try
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
catch (InputMismatchException e)
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();


write.close();
scan.close();

catch (FileNotFoundException e)
System.out.println(e.getMessage());







share|improve this answer























  • Yes! This works. Thank you so much, you are very much appreciated!

    – EiffelFlowers
    Nov 14 '18 at 17:34











  • @EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

    – Altaf
    Nov 14 '18 at 17:43











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305098%2fif-an-invalid-input-is-entered-during-an-iteration-of-a-loop-how-do-i-get-the-l%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0















Try this code. Hope this will fulfill your requirement.




 public static void inputScores(String newFile) 
Scanner scan = new Scanner(System.in);
Formatter write=null;
try
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true)
try
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
catch (InputMismatchException e)
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();


write.close();
scan.close();

catch (FileNotFoundException e)
System.out.println(e.getMessage());







share|improve this answer























  • Yes! This works. Thank you so much, you are very much appreciated!

    – EiffelFlowers
    Nov 14 '18 at 17:34











  • @EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

    – Altaf
    Nov 14 '18 at 17:43
















0















Try this code. Hope this will fulfill your requirement.




 public static void inputScores(String newFile) 
Scanner scan = new Scanner(System.in);
Formatter write=null;
try
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true)
try
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
catch (InputMismatchException e)
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();


write.close();
scan.close();

catch (FileNotFoundException e)
System.out.println(e.getMessage());







share|improve this answer























  • Yes! This works. Thank you so much, you are very much appreciated!

    – EiffelFlowers
    Nov 14 '18 at 17:34











  • @EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

    – Altaf
    Nov 14 '18 at 17:43














0












0








0








Try this code. Hope this will fulfill your requirement.




 public static void inputScores(String newFile) 
Scanner scan = new Scanner(System.in);
Formatter write=null;
try
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true)
try
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
catch (InputMismatchException e)
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();


write.close();
scan.close();

catch (FileNotFoundException e)
System.out.println(e.getMessage());







share|improve this answer














Try this code. Hope this will fulfill your requirement.




 public static void inputScores(String newFile) 
Scanner scan = new Scanner(System.in);
Formatter write=null;
try
write = new Formatter(newFile + ".txt");
double score = 0.0;
int count = 1;
while(true)
try
System.out.println("Please enter student " + count + "'s test score, input -1 to quit:n>");
score = scan.nextDouble();
count++;
if(score>=0)
write.format("%.2f%n", score);
else
break;
catch (InputMismatchException e)
System.err.println("Invalid input, Student's scores must be a number");
scan.next();
System.out.println();


write.close();
scan.close();

catch (FileNotFoundException e)
System.out.println(e.getMessage());








share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 14 '18 at 17:20









AltafAltaf

3110




3110












  • Yes! This works. Thank you so much, you are very much appreciated!

    – EiffelFlowers
    Nov 14 '18 at 17:34











  • @EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

    – Altaf
    Nov 14 '18 at 17:43


















  • Yes! This works. Thank you so much, you are very much appreciated!

    – EiffelFlowers
    Nov 14 '18 at 17:34











  • @EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

    – Altaf
    Nov 14 '18 at 17:43

















Yes! This works. Thank you so much, you are very much appreciated!

– EiffelFlowers
Nov 14 '18 at 17:34





Yes! This works. Thank you so much, you are very much appreciated!

– EiffelFlowers
Nov 14 '18 at 17:34













@EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

– Altaf
Nov 14 '18 at 17:43






@EiffelFlowers If you got your answer then please vote up and marked as answered or if you don't have sufficient reputation then at least like it.

– Altaf
Nov 14 '18 at 17:43




















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305098%2fif-an-invalid-input-is-entered-during-an-iteration-of-a-loop-how-do-i-get-the-l%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

ReactJS Fetched API data displays live - need Data displayed static

政党