جاوا

F.mohamady

New Member
سلام
وقت بخیر
سوال : در main کدی بنویسید که یک عبارت ریاضی شامل 3 قسمت (عدد ، علامت ، عدد ) دریافت کند و آن را به سه قسمت تقسیم کند و حاصل عبارت را محاسبه نماید.
لطفا اگز کسی پاسخ سوال بالا را می دونه کمک کنه.
ممنونم
 

the_king

مدیرکل انجمن
سلام
وقت بخیر
سوال : در main کدی بنویسید که یک عبارت ریاضی شامل 3 قسمت (عدد ، علامت ، عدد ) دریافت کند و آن را به سه قسمت تقسیم کند و حاصل عبارت را محاسبه نماید.
لطفا اگز کسی پاسخ سوال بالا را می دونه کمک کنه.
ممنونم
لطفا در عنوان تاپیک ها موضوع سوال رو هم مشخص کنید، "جاوا" صرفا زبان رو تعیین می کنه، معلوم نمی کنه که سوال در مورد چه بحثی از جاوا است.
Java:
import java.util.regex.*;
import java.util.Scanner;

public class Main
{

    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter expression ( for example 12+4 or 64/16 ) :");
        String s = scanner.nextLine();
        Pattern p = Pattern.compile("\\s*(\\d+)\\s*([\\-+*/])\\s*(\\d+)\\s*");
        Matcher m = p.matcher(s);
        if (m.find())
        {
            int num1 = Integer.parseInt(m.group(1));
            String operation = m.group(2);
            int num2 = Integer.parseInt(m.group(3));
            System.out.printf("Result = %d", Calc(num1, num2, operation));
        } else
        {
            throw new UnsupportedOperationException("Error: Invalid expression.");
        }
    }

    public static int Calc(int num1, int num2, String operation)
    {
        if (operation.equals("+"))
        {
            return num1 + num2;
        } else if (operation.equals("-"))
        {
            return num1 - num2;
        } else if (operation.equals("*"))
        {
            return num1 * num2;
        } else if (operation.equals("/"))
        {
            if (num2 == 0)
            {
                throw new ArithmeticException("Error: Divide by zero.");
            }
            return num1 / num2;
        } else
        {
            throw new UnsupportedOperationException("Error: Invalid operation.");
        }
    }
}
 

F.mohamady

New Member
لطفا در عنوان تاپیک ها موضوع سوال رو هم مشخص کنید، "جاوا" صرفا زبان رو تعیین می کنه، معلوم نمی کنه که سوال در مورد چه بحثی از جاوا است.
Java:
import java.util.regex.*;
import java.util.Scanner;

public class Main
{

    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter expression ( for example 12+4 or 64/16 ) :");
        String s = scanner.nextLine();
        Pattern p = Pattern.compile("\\s*(\\d+)\\s*([\\-+*/])\\s*(\\d+)\\s*");
        Matcher m = p.matcher(s);
        if (m.find())
        {
            int num1 = Integer.parseInt(m.group(1));
            String operation = m.group(2);
            int num2 = Integer.parseInt(m.group(3));
            System.out.printf("Result = %d", Calc(num1, num2, operation));
        } else
        {
            throw new UnsupportedOperationException("Error: Invalid expression.");
        }
    }

    public static int Calc(int num1, int num2, String operation)
    {
        if (operation.equals("+"))
        {
            return num1 + num2;
        } else if (operation.equals("-"))
        {
            return num1 - num2;
        } else if (operation.equals("*"))
        {
            return num1 * num2;
        } else if (operation.equals("/"))
        {
            if (num2 == 0)
            {
                throw new ArithmeticException("Error: Divide by zero.");
            }
            return num1 / num2;
        } else
        {
            throw new UnsupportedOperationException("Error: Invalid operation.");
        }
    }
}
بله حتما
خیلی خیلی ممنونم
فقط میشه به جای Pattern p=Pattern.compile\l از استفاده کرد؟string[] result=str.split
 

the_king

مدیرکل انجمن
بله حتما
خیلی خیلی ممنونم
فقط میشه به جای Pattern p=Pattern.compile\l از استفاده کرد؟string[] result=str.split
از Split استفاده میشه تا چند عبارت رو که بین شون کاراکتر های جداکننده مشخصی هست تفکیک کنیم، مثلا "12,+,7" رو بر اساس جداکننده "," تفکیک می کنیم تا "7" و "+" و "12" جدا بشن، اون جدا کننده "," خودش دیگه در نتایج نیست، صرفا در عبارت نقش جدا کننده داشته.
اما وقتی "7+12" یا "6*2" رو داریم دیگه بین سه بخش جدا کننده خاصی نیست، اون + یا * که جدا کننده نیست، خود + یا * رو هم در نتایج لازم داریم، اگر بر اساس جدا کننده هایی مثل "+" از Split استفاده بشه دیگه فقط اعداد "12" و "7" دریافت میشه و عملگر که لازمش داریم تفکیک نمیشه.
 

F.mohamady

New Member
از Split استفاده میشه تا چند عبارت رو که بین شون کاراکتر های جداکننده مشخصی هست تفکیک کنیم، مثلا "12,+,7" رو بر اساس جداکننده "," تفکیک می کنیم تا "7" و "+" و "12" جدا بشن، اون جدا کننده "," خودش دیگه در نتایج نیست، صرفا در عبارت نقش جدا کننده داشته.
اما وقتی "7+12" یا "6*2" رو داریم دیگه بین سه بخش جدا کننده خاصی نیست، اون + یا * که جدا کننده نیست، خود + یا * رو هم در نتایج لازم داریم، اگر بر اساس جدا کننده هایی مثل "+" از Split استفاده بشه دیگه فقط اعداد "12" و "7" دریافت میشه و عملگر که لازمش داریم تفکیک نمیشه.
اوکی
خیلی ممنونم
 

جدیدترین ارسال ها

بالا