কম্পিউটার টিউটোরিয়াল

জাভা প্রোগ্রাম: সুইচ-কেস (Switch-Case) ব্যবহার করে সিম্পল ক্যালকুলেটর বানানো

সুইচ-কেস ক্যালকুলেটর কী?

সুইচ স্টেটমেন্ট ব্যবহার করে একটি সিম্পল ক্যালকুলেটর বানানো যা যোগ, বিয়োগ, গুণ, ভাগ, মডুলো এবং ফ্লোর ডিভিশন করতে পারে। সুইচ কেস কোডকে ক্লিন এবং পাঠযোগ্য করে তোলে।

সমর্থিত অপারেশন

ইনপুট ও আউটপুট উদাহরণ

ইনপুট:

The two inputs: 40.0 and 12.0
Operator: %

আউটপুট:

The result is 40.0 % 12.0 = 4.0

অ্যালগরিদম

  1. প্রোগ্রাম শুরু করুন
  2. দুটি ডাবল (my_input_1, my_input_2), একটি ক্যারেক্টার (operator), একটি ডাবল (my_result) ঘোষণা করুন
  3. ব্যবহারকারী থেকে দুটি সংখ্যা এবং অপারেটর ইনপুট নিন
  4. সুইচ(operator) দিয়ে কেস অনুযায়ী অপারেশন করুন
  5. ডিফল্ট কেসে ইনভেলিড অপারেটর হ্যান্ডল করুন
  6. ফলাফল প্রদর্শন করুন
  7. প্রোগ্রাম শেষ করুন

উদাহরণ ১: ব্যবহারকারী ইনপুট নেওয়া

import java.util.Scanner;

public class OperatorSwitch {
    public static void main(String[] args) {
        char operator;
        Double my_input_1, my_input_2, my_result;
        
        System.out.println("Required packages have been imported");
        Scanner my_scanner = new Scanner(System.in);
        System.out.println("A reader object has been defined");
        System.out.println("Enter the first number");
        my_input_1 = my_scanner.nextDouble();
        System.out.println("Enter the second number");
        my_input_2 = my_scanner.nextDouble();
        System.out.println("Enter any of the following operator: +, -, *, /, %");
        operator = my_scanner.next().charAt(0);
        
        switch (operator) {
            case '+':
                my_result = my_input_1 + my_input_2;
                System.out.println(my_input_1 + " + " + my_input_2 + " = " + my_result);
                break;
            case '-':
                my_result = my_input_1 - my_input_2;
                System.out.println(my_input_1 + " - " + my_input_2 + " = " + my_result);
                break;
            case '*':
                my_result = my_input_1 * my_input_2;
                System.out.println(my_input_1 + " * " + my_input_2 + " = " + my_result);
                break;
            case '/':
                my_result = my_input_1 / my_input_2;
                System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
                break;
            case '%':
                my_result = my_input_1 % my_input_2;
                System.out.println(my_input_1 + " % " + my_input_2 + " = " + my_result);
                break;
            default:
                System.out.println("The operator you have selected is invalid");
                break;
        }
    }
}

উদাহরণ ২: পূর্বনির্ধারিত মান ব্যবহার

public class OperatorSwitch {
    public static void main(String[] args) {
        char operator = '%';
        Double my_input_1 = 40.0, my_input_2 = 12.0, my_result;
        
        System.out.println("The two numbers are defined as " + my_input_1 + " and " + my_input_2);
        System.out.println("The operator is defined as " + operator);
        
        switch (operator) {
            case '+': my_result = my_input_1 + my_input_2; break;
            case '-': my_result = my_input_1 - my_input_2; break;
            case '*': my_result = my_input_1 * my_input_2; break;
            case '/': my_result = my_input_1 / my_input_2; break;
            case '%': my_result = my_input_1 % my_input_2; break;
            default:
                System.out.println("The operator you have selected is invalid");
                return;
        }
        System.out.println(my_input_1 + " " + operator + " " + my_input_2 + " = " + my_result);
    }
}

কোড ব্যাখ্যা

  • Double টাইপ: ডেসিমেল সংখ্যা হ্যান্ডেল করতে (int দিয়ে ভাগ করলে ইন্টিজার ডিভিশন হয়)
  • break স্টেটমেন্ট: প্রতিটি কেসের শেষে break না থাকলে "fall-through" হবে
  • ডিফল্ট কেস: ইনভেলিড অপারেটর হ্যান্ডেল করে
  • Scanner.next().charAt(0): ক্যারেক্টার ইনপুট নেওয়ার стандарт পদ্ধতি

Java 12+ Switch Expression (আধুনিক সিনট্যাক্স)

public class ModernCalculator {
    public static void main(String[] args) {
        double a = 40, b = 12;
        char op = '%';
        
        double result = switch (op) {
            case '+' -> a + b;
            case '-' -> a - b;
            case '*' -> a * b;
            case '/' -> b != 0 ? a / b : Double.NaN;
            case '%' -> b != 0 ? a % b : Double.NaN;
            default -> throw new IllegalArgumentException("Invalid operator: " + op);
        };
        
        System.out.println(a + " " + op + " " + b + " = " + result);
    }
}

এডভান্সড ক্যালকুলেটর ফিচারস

১. ভাগফল চেক (Divide by Zero Handling)

case '/':
    if (my_input_2 == 0) {
        System.out.println("Error: Division by zero!");
    } else {
        my_result = my_input_1 / my_input_2;
        System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
    }
    break;

২. পাওয়ার (^) এবং স্কোয়ার রুট (sqrt) যোগ করা

case '^':
    my_result = Math.pow(my_input_1, my_input_2);
    break;
case 's': // square root of first number
    my_result = Math.sqrt(my_input_1);
    break;

৩. লুপ দিয়ে কন্টিনিউয়াস ক্যালকুলেটর

Scanner sc = new Scanner(System.in);
while (true) {
    System.out.print("Enter expression (or 'exit'): ");
    String input = sc.nextLine();
    if ("exit".equalsIgnoreCase(input)) break;
    
    // পার্সিং লজিক এখানে
    // String[] parts = input.split(" ");
    // double a = Double.parseDouble(parts[0]);
    // char op = parts[1].charAt(0);
    // double b = Double.parseDouble(parts[2]);
}

সাধারণ ভুল এড়ানোর টিপস

  • break ভুলে যাবেন না (fall-through বাগ)
  • ডাবল টাইপ ব্যবহার করুন ইন্টিজার ডিভিশন এড়াতে
  • ডিভাইড বাই জিরো চেক করুন
  • ইনপুট ভ্যালিডেশন যোগ করুন (non-numeric হ্যান্ডলিং)
  • Scanner.nextLine() এবং next() মিক্স করলে বাগ হয় - 주의

Enum ব্যবহার করে টাইপ-সেফ ক্যালকুলেটর

enum Operator {
    ADD('+', (a, b) -> a + b),
    SUB('-', (a, b) -> a - b),
    MUL('*', (a, b) -> a * b),
    DIV('/', (a, b) -> b != 0 ? a / b : Double.NaN),
    MOD('%', (a, b) -> b != 0 ? a % b : Double.NaN);
    
    final char symbol;
    final DoubleBinaryOperator func;
    Operator(char s, DoubleBinaryOperator f) { symbol = s; func = f; }
    
    static Operator fromChar(char c) {
        for (Operator op : values()) if (op.symbol == c) return op;
        throw new IllegalArgumentException("Unknown operator: " + c);
    }
}

// ব্যবহার
Operator op = Operator.fromChar('%');
double result = op.func.applyAsDouble(40, 12);
  1. জাভা প্রোগ্রাম: লুপ ব্যবহার করে অ্যালফাবেট (A থেকে Z) প্রদর্শন

  2. অ্যারেতে সব ডিজিট ব্যবহার করে ৩ দিয়ে বিভাজ্য সংখ্যা তৈরি করা সম্ভব কিনা চেক করার জাভা প্রোগ্রাম

  3. জাভাতে স্ট্রিং তুলনা কেস-ইনসেনসিটিভ করা

  4. কমান্ড প্রম্পট ব্যবহার করে জাভা প্রোগ্রাম কম্পাইল ও রান করা

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
অপারেটরঅপারেশনউদাহরণ
+যোগ (Addition)10 + 5 = 15
-বিয়োগ (Subtraction)10 - 5 = 5
*গুণ (Multiplication)10 * 5 = 50
/ভাগ (Division)10 / 5 = 2.0
%মডুলো (Modulo/Remainder)10 % 3 = 1