Search code examples
javaloopssubtractiondecrement

Decrement by a certain amount on java


i'm trying to create a program where the number that the user has input would decrease by a certain amount. something that would like this:

Update by (Increment/Decrement):decrement
Enter starting number:15
Enter update number:3
Enter end number:3
loop#1  value=15
loop#2  value=12

the end number is where the loop would stop and the update number is how much the starting number should decrement by. so far this is the code I have and I'm stuck on how to keep the loop going until the end number.

package jaba;
import java.util.Scanner;


public class loop {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    Scanner input = new Scanner(System.in);

    System.out.print("Update by (Increment/Decrement):");
    String Decrement = scan.nextLine();
    
    System.out.print("Enter starting number:");
    String number = scan.nextLine();
    
    System.out.print("Enter update number:");
    String upnumber = scan.nextLine();
    
    System.out.print("Enter end number:");
    String endnumber = scan.nextLine();
    
    
    
    int i,j;
    
    i = 15;
    j = 1;
    
    do {
        
        System.out.println("loop#" +j+ "\tvalue="+i);
        j++;
        
        
        
        }while(i<15);
            
        i = i-3;
        
        System.out.println("loop#" +j+ "\tvalue="+i);
        };
        
        
}

Solution

  • how about something like this:

    public class loop {
    
        public enum Operation {INCREMENT, DECREMENT, INVALID}
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
    
            System.out.print("Update by (Increment/Decrement):");
            String operationString = scan.nextLine();
    
            System.out.print("Enter starting number:");
            String numberString = scan.nextLine();
    
            System.out.print("Enter update number:");
            String upnumberString = scan.nextLine();
    
            System.out.print("Enter end number:");
            String endnumberString = scan.nextLine();
    
            // Determine and parse stuff
            int startNumber = Integer.parseInt(numberString);
            int updateNumber = Integer.parseInt(upnumberString);
            int endNumber = Integer.parseInt(endnumberString);
            // Parse operation, but assume invalid operation
            Operation operation = Operation.INVALID;
            if (operationString.equalsIgnoreCase("increment")) {
                operation = Operation.INCREMENT;
            } else if (operationString.equalsIgnoreCase("decrement")) {
                operation = Operation.DECREMENT;
            }
    
            // now do the "meat" of the assignment
            int loopNumber = 0; // we'll keep the loop number as a separate counter
            switch (operation) {
                case INCREMENT:
                    for (int i = startNumber; i < endNumber; i = i + updateNumber) {
                        loopNumber++;
                        performAssignmentPrinting(loopNumber, i);
                    }
                    break;
    
                case DECREMENT:
                    for (int i = startNumber; i > endNumber; i = i - updateNumber) {
                        loopNumber++;
                        performAssignmentPrinting(loopNumber, i)
                    }
                    break;
    
                case INVALID:
                default:
                    throw new IllegalStateException("Please enter supported operation! (increment/decrement)");
            }
        }
    
        private static void performAssignmentPrinting(int loopNumber, int value) {
            System.out.println("loop#" + loopNumber + "\tvalue=" + value);
        }
    }
    

    or the do/while version:

            // now do the "meat" of the assignment
            int currentNumber = startNumber;
            int loopNumber = 0; // we'll keep the loop number as a separate counter
    
            do {
                loopNumber++;
                switch (operation) {
                    case INCREMENT:
                        currentNumber += updateNumber;
                        performAssignmentPrinting(loopNumber, currentNumber);
                        break;
    
                    case DECREMENT:
                        currentNumber -= updateNumber;
                        performAssignmentPrinting(loopNumber, currentNumber);
                        break;
    
                    case INVALID:
                    default:
                        throw new IllegalStateException("Please enter supported operation! (increment/decrement)");
                }
    
            } while (currentNumber != endNumber);