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

create trim method

بدأه sarah2010 في 26 فبراير 2010 · 6 رد · 505 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قمت بصناعة trim method بس المشكلة عندي انه اريد المستخدم يدخل قيم صحيحةIntegers .

مثلا أذا كان المدخل = 00012334000 فان الناتج يصبح 12334 بدون الاصفار الموجودو في الطرفين اليمين واليسار

اليكم هذا الكود

package trimmethod;
/*
 * posudoCode:
 * we Have to create the trim method and make it works with integers 
 * if the integers that we entered has 0at the beggining or 0 at the end then our method will get ride off 
 * the 0s from the beginning and the end 
 * Test it and make it wokrs
 */
import java.util.Scanner;

public class Main {

 public static void main(String[] args) {
 Scanner input = new Scanner(System.in);
 // int[] array= {0,0,0,0,2,1,3,4,5,0,0,0,0};
 System.out.println("Please enter your integer: ");
 int []array = input.nextInt();
 System.out.println("Your integer after it was terminated is "+ trim(array));
 }

 public static int[] trim(int[] array) {
 int start = 0;
 while(array[start] == 0 )
 start++;
 int end =0;
 while(array[end] == 0 )
 end--;
 int[] newArray = new int[end-start+1];
 for (int i =start ; i<= end ;i++)
 newArray[i-start]= array;
 return newArray;
 }

}

تم تعديل هذه المشاركة بواسطة herch في 26 فبراير 2010 في 22:56 — السبب: الوسم [code]

#2

أولا: nextInt() تعيد int وليس مصفوفة int

ثانيا: بالنسبة لكل قيمة int تبتدأ بأصفار، فإن الأصفار الموجودة في البداية تتم إزالتها تلقائيا بدون تدخل من المبرمج.

يجب أن تشرحي السؤال أكثر

#3
herch كتب:

أولا: nextInt() تعيد int وليس مصفوفة int

ثانيا: بالنسبة لكل قيمة int تبتدأ بأصفار، فإن الأصفار الموجودة في البداية تتم إزالتها تلقائيا بدون تدخل من المبرمج.

يجب أن تشرحي السؤال أكثر

عفواً اخي عن عدم توضيحي للسؤال.

المشكلة وما فيها انني اريد استدعا الtrim method واللي عبارة عن مصفوفة في الmain Mehtod اريد استدعيها بس مو طالعة معاي.

#4
 public static long trimer(long number) {

        System.out.println(number);
        String numerStr = Long.toString(number);
        System.out.println(numerStr);
//Trims Zeros From the begning
        if (numerStr.startsWith("0")) {
            int end = 0;
            for (char c : numerStr.toCharArray()) {
                if (c != '0') {
                    break;
                }
                end++;
            }
            numerStr = numerStr.substring(end, numerStr.length());
        }

//Trims Zeros From the trailer
        if (numerStr.endsWith("0")) {
            char[] cs = numerStr.toCharArray();
            int end = cs.length - 1;
            for (int i = cs.length - 1; i > 0; i--) {
                if (cs != '0') {
                    break;
                }
                end--;
            }

            numerStr = numerStr.substring(0, end + 1);
        }


        return Long.parseLong(numerStr);

    }
#5

( تعديل : مشاركتيين بنفس الوقت مع الاخ محمد :) )

الكود مكتوب بطريقة خاطئة ، لا تتم ترجمته أصلاً بطريقة صحيحه .

النقطة التي أشار لها الأخ herch ، يجب معالجتها بعمل loop لادخال مجموعة أرقام .

في الدالة trim ، يجب عمل loop يبدأ من بداية المصفوفة ويتجاهل أي رقم حتى أول عدد غير الصفر يصل اليه .

وعمل loop آخر يبدأ من نهاية المصفوفة ( عندك خطأ هنا ) ، ويتجاهل أي صفر حتى يصل الى أول عدد غير الصفر ،

شيء شبيه بالكود التالي ( الكود لن يعمل ..لم أجربه ، ولكنه لتوضيح الصورة فقط ) /

import java.util.Scanner;

public class Main {

 public static void main(String[] args) {
 Scanner input = new Scanner(System.in);
 int length  = 10;
 int counter = 0 ; 
 int []arr = new arr[length];
 System.out.println("Please enter 10 digits");
 do{

 System.out.println("Please enter a digit");
 int number = input.nextInt();
 arr[counter++] = number ; 
 }while(counter<10);

 System.out.println("Your integer after it was terminated is "+ trim(array));
 }

 public static int[] trim(int[] array) {
  int []newArray = new int[array.length];
  int left = 0;
  int right = array.length - 1;
  while(array == 0 )
  {
	left++;
  }
  while(array == 0 )
  {
	right--;
  }

  // copy
  int j = 0;
  for(int i=left;i<=right;i++)
  {
	newArray[j] = array;
	j++;
  }  

 return newArray;
 }

}

تم تعديل هذه المشاركة بواسطة الشمري في 27 فبراير 2010 في 04:02

1

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

على فكرة اخ شمري

دعنا نفترض ان الرقم المصفوفة التالية كانت عندنا

array={0,1,2,3,0,0}

فان النتيجة سوف تكون

array={1,2,3,0,0,0}

لانك ترجع نفس طول المصفوفة المدخلة

و يجب ان يتم تعديل طول المصفوفة بحيث تناسب العدد الجديد بعد الحذف

تحياتي

#7

صحيح ، لم انتبه لهذه النقطة ..

شكرا لك اخي .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

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