I can't figure out a way to have this program continue to loop if you press any number other than 1 or 2.

Here's the test appilcation.

public class AnalysisTest
{
   public static void main( String args[] )
   {
      Analysis application = new Analysis(); // create Analysis object
      application.processExamResults(); // call method to process results
   } // end main

} // end class AnalysisTest

My problem is in the class below.


This is what i have so far. Im thinking of putting this in there replace the if statement.


if ( result == 0 )
continue;
if ( result >= 3 )
continue;
if ( failures == 0 )
continue;
if ( failures >= 3 )
continue;

if ( result == 1 ) // if result 1,
passes = passes + 1; // increment passes;
else ( failures == 2 ) // else result is not 1, so
failures = failures + 1; // increment failures

I can't figure it out for some reason :(

I did this in BASIC and I can't remember how.

import java.util.Scanner;
public class Analysis
{
   public void processExamResults()
   {
      // create Scanner to obtain input from command window
      Scanner input = new Scanner( System.in );

      // initializing variables in declarations
      int passes = 0; // number of passes
      int failures = 0; // number of failures
      int studentCounter = 1; // student counter
      int result; // one exam result (obtains value from user)

      // process 10 students using counter-controlled loop
      while ( studentCounter <= 10 )
      {
         // prompt user for input and obtain value from user
         System.out.print( "Enter result (1 = pass, 2 = fail): " );
         result = input.nextInt();

         // if...else nested in while
         if ( result == 1 )          // if result 1,
            passes = passes + 1;     // increment passes;
         else                        // else result is not 1, so
            failures = failures + 1; // increment failures

         // increment studentCounter so loop eventually terminates
         studentCounter = studentCounter + 1;
      } // end while

      // termination phase; prepare and display results
      System.out.printf( "Passed: %d\nFailed: %d\n", passes, failures );

      // determine whether more than 8 students passed
      if ( passes > 8 )
         System.out.println( "Raise Tuition" );
   } // end method processExamResults

} // end class Analysis

First thing you didn't do anything in your code so that it exit if anybody enter "result > 2" So it loops until 10 times and after that it exit.
Replace your existing code with this

[INDENT][B]if[/B] (result == 1) // if result 1,
[INDENT]passes = passes + 1; // increment passes;
[/INDENT][B]else[/B] [B]if[/B](result == 2)
{
[INDENT]// else result is not 1, so
failures = failures + 1; // increment failures
[/INDENT]}
[B]else
[/B][INDENT][B]break[/B];
[/INDENT][/INDENT]

Now it will exit from loop if any body enters other then 1 or 2.

Actually what I'm trying to figure out is how to keep the loop going even if you enter other numbers in.

I just replaced break with continue.

if (result == 1) // if result 1,

		    passes = passes + 1; // increment passes;

		 else if(result == 2) {

		    failures = failures + 1; // increment failures

		    } else

		        continue;

Your code you gave me somehow commented the failures = failures +1 so at first it wasnt incrementing that.


I think I got it. Right?

hi,
Maybe this code can help you.

package com.prom1;
import java.util.Scanner;
public class AnalysisTest {
public static void main(String args[]) {
Analysis application = new Analysis(); // create Analysis object
application.processExamResults(); // call method to process results
} // end main
} // end class AnalysisTest
class Analysis {
public void processExamResults() {
// create Scanner to obtain input from command window
// initializing variables in declarations
int passes = 0; // number of passes
int failures = 0; // number of failures
int studentCounter = 1; // student counter
int result; // one exam result (obtains value from user)
Scanner input = new Scanner(System.in);
// process 10 students using counter-controlled loop
while (studentCounter <= 10) {
// prompt user for input and obtain value from user
System.out.print("Enter result (1 = pass, 2 = fail): ");
result = input.nextInt();
// if...else nested in while
if (result == 1) {// if result 1,
passes = passes + 1; // increment passes;
studentCounter = studentCounter + 1;
continue;
} else if (result == 2) {
// else result is not 1, so
failures = failures + 1; // increment failures
studentCounter = studentCounter + 1;
continue;
} else {
System.out.println("that is wrong! Please input number again!");
continue;
}
// increment studentCounter so loop eventually terminates
} // end while3
// termination phase; prepare and display results
System.out.printf("Passed: %d\nFailed: %d\n", passes, failures);
// determine whether more than 8 students passed
if (passes > 8)
System.out.println("Raise Tuition");
} // end method processExamResults
} // end class Analysis

@deng_cen please use tags to insert code into post. It is the hash"#" sign in toolbar above the text area for reply.

The continue statement, when executed in a while, for or do...while, skips remaining statements in the loop body and process with next iteration of the loop. In while and do...while statements, the program evaluates the loop-ontinuation test immidiately after the continue statement executes. In a for statement, the increment expression executes, then the program evalues the loop-continuation test.

I hate to look into Deitel&Deitel book to get you proper explanation to make it clear as I may get on rants to explain what the continue is for. In your case continue is not neccesary as you do not have any commands after continue in your if/else checks so you can remove them. Example bellow will show when continue statement is usefull

for(int count =1; count <= 10; count++)
{
     if(count == 5)
     continue;

     //this meessage will not be printed if count == 5
     System.out.printf("%d", count); 
}

So the way I have it. Is that ok?

So the way I have it. Is that ok?

as long you don't do it as the code from deng_cen shows you alright

if (result == 1) {// if result 1,
passes = passes + 1; // increment passes;
studentCounter = studentCounter + 1;
continue;
}

there is no reason for continue, no other commands in the if/else statement after continue

I understand that but is there another way to do the problem without adding continue to it at all?

yes you have it there, appropriate increment inside if/else statement

if (result == 1) {// if result 1,
passes = passes + 1; // increment passes;
studentCounter = studentCounter + 1;
} 
else if (result == 2) {// if result 2,
failures = failures + 1;
studentCounter = studentCounter + 1;
continue;
}

So studentCounter will be incremented only if the mark is 1 or 2

hi:
Maybe continue is not neccesary in my codes.but ,I think if ..else..that is very clarity.that is good custom.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.