الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال من امتحانات Test king

مغلق
بدأه akram في 23 مايو 2004 · 5 رد · 739 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

حيرني هدا الكود الدي وجدته في امتحان TestGing لكني لم افهم لمادا لم تؤدي الفنكشن ; ('text = text.replace('j','i

دورها اد من المفترض ان تقوم بتغير الحرف j ليصبح i حيث من المتوقع

ان تكون النتيجه iava iavac لكن لم يتغير شئ سوئ ان كانت النتيجه

java javac وهدا مخالف لما هوا متوقع حيث عملت الفانكشن ;("text = text.append("c فقط ولم تعمل ;( 'replace('j','i

افيدونا افادكم الله

import java.awt.*;
import java.util.*;
public class stringTest{
    public static void  stringReplace(String text){
	text = text.replace('j','i');
     }

    public static void bufferReplace(StringBuffer text){
	text = text.append("c");
    }

    public static void main(String args[]){

	String textString = new String("java");
	StringBuffer textBuffer = new StringBuffer("java");
        stringReplace(textString);
	bufferReplace(textBuffer);
	System.out.println(textString + " " +textBuffer);
    }
}

زورو موقعنا

www.algabal.com

#2

لو سمحتم ممكن تفيدوني في برنامج محيرني بلغة الجافا؟

وهو :

باستخدام مفهوم package و Constactor و overloading قم بتكوين ثلاثة ملفات كل ملف يحتوي على Class بحيث يتم من خلال هذه الملفات ادخال وطباعة اسمك والكليه والقسم والمستوى الذي انت فيه مع ادخال المعدل ويقوم البرنامج بطباعة التقدير المقابل لدرجة المعدل وحسب الجدول التالي:

الدرجه التقدير

0-49 Fail

69-50 Pass

79-70 Good

89-80 Very good

100-90 excellent

أرجوا الرد في اقرب وقت ممكن وشكرررررررررررررررراً

#3

Arwa

لقد خالفت قواعد المنتدى ... :(

و هذا المنتدى ليس لحل الواجبات ... بل للمساعدة فيها ..

أرنا خطوات حلك ... و سنقوم بعد ذلك بإصلاح أخطاءه ...

#4

مرحبا اخي akram حاولت ان افهم لماذا لايقوم البرنامج الذي كتبته بالمطلوب فلم اعرف واعتقد انك تستطتيع تبسيطه ليقوم بالمطلوب وهذا هو البرنامج والذي يقوم بما تريد

public class stringTest{

public static void main(String args[]){

String textString = "java";

textString = textString.replace('j','i');

StringBuffer textBuffer =new StringBuffer(textString);

textBuffer.append("c");

System.out.println(textString+" " +textBuffer);

   }
}

والله الموفق

لست متواجد بشكل يومي

#5

السلام عليكم،

للرد على سؤالك يجب أن تفهم أن الدالة Method تتحصل على نسخة من المتغير وليس المتغير نفسه.

ففي الدالة stringReplace المتغير text له قيمة محلية في وسط الدالة هي نسخة من "java" ثم تتغير هذه القيمة في وسط الدالة لتصبح "javac" . ولكن قيمة textString لا تتغير.

في حين أنه في الدالة الثانية bufferReplace الدالة تخلق قيمة محلية text تحتوي،دعنا نقول، على عنوان ال Object new StringBuffer في الذاكرة . فالتعليمة text.append ستغير محتوى الذاكرة.

ضف إلى ذلك أن كل ما هو String هو ذو قيمة ثابتة . ونقول:

Strings are immutable objects, we can't change their value.

ولأضر ب لك مثلا :

String s1= "java";
s1.replace("j","i");
s2=s1.replace("j","i");

فقيمة s1 لن تتغير حتى بعد التعليمة الثانية

ولكن s2 تحوي القيمة الجديدة

أرجوا أنني لم أعقد الأمور كثيرا، ولكنني لست متعودا على الكتابة بالعربية

#6

الاخ Student_1981 شكرا علي الرد

لكن ارجوا من الاخ عبد الحميد بطاش المزيد من التوضيح لو سمحت فهدا شئ جد مهم ولم يمر علي من قبل

مشكوور

زورو موقعنا

www.algabal.com

هذا الموضوع مغلق.

مواضيع مشابهة