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

مشكلة فى الخروج من for Loop

بدأه mr.beshoy في 22 مارس 2010 · 9 رد · 929 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هنا أقوم بعمل لوحة مقسمة إلى 6 صفوف و 7 أعمدة .

-------------------------------------------------------------------------

ستجدون loop خاصة بالأعمدة و ترسم 7 أعمدة

و loop أخرى خاصة بالصفوف طبقاً للكود يجب أن ترسم 6 صفوف فقط و لكن للأسف انها تقوم برسم صف سابع .... لماذا ؟؟؟

جربت طرق عديدة و لكن مازلت الحلقة المختصة بالصفوف ترسم 7 صفوف .

انظروا الكود :

--------------------

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;

public class TestNet extends JFrame {

    private DrawingNet drawingNet;

    public TestNet() {
        drawingNet = new DrawingNet();
        getContentPane().add(drawingNet, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        TestNet testNet = new TestNet();
        testNet.setDefaultCloseOperation(TestNet.EXIT_ON_CLOSE);
        testNet.setSize(new Dimension(600, 300));
        testNet.setLocationRelativeTo(null);
        testNet.setVisible(true);
        testNet.setExtendedState(MAXIMIZED_BOTH);
    }
}

-------------------------------------------------------------


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

class DrawingNet extends JPanel {

    private static final int ROW = 6, COL = 7;

    public DrawingNet() {
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        int X_START = 83, Y_START = 100, DISTANCE = 0;
        g.setColor(Color.BLACK);
        for (int c = 0; c < COL; c++) {
            for (int r = 0; r < ROW; r++) {
                g.drawLine(X_START, Y_START + DISTANCE, X_START * COL, Y_START + DISTANCE);
                g.drawLine(X_START + DISTANCE, Y_START, X_START + DISTANCE, (Y_START * ROW) - 83);
            }
            DISTANCE += 83;
        }
    }
}

الكود مرفق

شكراً

net.rar

#2

اكل راسي كودك

اخيرا استنتجت المشكلة

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

و اخيرا طلع معي الكود التالي

int width = 400;// table width
        int height = 500;//table height
        int coloms = 10;// number of coloms
        int rows = 10;// number of rows
        int x = 50;// start x
        int y = 100;// start of y

        int colomsSpacing = width / coloms;
        int colomsHeight = height;
        for (int i = 0; i <= coloms; i++) {
            g.drawLine(x + (i * colomsSpacing), y, x + (i * colomsSpacing), y + colomsHeight);
        }

        int rowsSpacing = height / rows;
        int rowsWidth = width;
        for (int i = 0; i <= rows; i++) {
            g.drawLine(x, y + (i * rowsSpacing), x + (rowsWidth), y + (i * rowsSpacing));
        }
#3

يا أستاذى العزيز أنا الكود واضح عندى جدا

المشكلة انى عاوزهم 6 صفوف فقط و ليس7

فاهمنى؟؟

حضرتك خرجت خاجر نطاق مشكلتنا

معلش استحملنا :)

#4

المشكلة يا اخي

لا يجوز ربط رسم الاعمدة و الصفوف في نفس ال Loop

#5

يعنى تقصد اعمل حلقة للصفوف و حدها و للاعمدة وحدها ( منفصلين عن بعض )

؟؟

#6

مثل ما عملت في الكود المسبق

انا مش عارف شو المشكلة بالكود اللي بعتلك اياه

#7

أنا عاوز فقط 7 أعمدة و 6 صفوف

و هذا ما يفعله الكود بتاعى ...لكن فى صف زيادة لا اعرف من أين هو ؟؟

#8

تم عمل ما أريده .

و لكن ذلك بعد فصل الحلقتين كلٍ منها عن الأخرى . لكن لماذا عندما كانوا مثا ما فى أول مشاركة ( يظهر صف سابع )

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

class DrawingNet extends JPanel {

    private static final int ROW = 6, COL = 7;

    public DrawingNet() {
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        int X_START = 83, Y_START = 100, DISTANCE_Y = 0, DISTANCE_X = 0;
        g.setColor(Color.BLACK);
        for (int r = 0; r < ROW; r++) {
            g.drawLine(X_START, Y_START + DISTANCE_Y, X_START * COL, Y_START + DISTANCE_Y);
            DISTANCE_Y += 83;

        }
        for (int c = 0; c < COL; c++) {
            g.drawLine(X_START + DISTANCE_X, Y_START, X_START + DISTANCE_X, (Y_START * ROW) - 83);
            DISTANCE_X += 83;
        }

    }
}

الكود مرفقة

شكراً

net.rar

#9

فعليا في الكود الاول انت كنت تكرر الرسم لانك كنت تدخل 2 loops في بعض

حول ان تتبعه ستجد ما فلته صحيح

و لكن لا يوجد داعي لذلك

حيث يجب رسم الخط مرة واحدة

تحياتي و بالتوفيق :happy:

#10

فقط أضف هذا الأمر في بداية الـloop الثاني
لتمنع رسم الصف السابع
:

if(c+1<COL)

تعديل:

المعذرة لم أنتبه لتاريخ الموضوع
(كنت أتصفح القسم وفاتني أن هذا الموضوع يقبع في أسفل الصفحة)
! :unsure:

تم تعديل هذه المشاركة بواسطة W.B في 6 أبريل 2010 في 17:05

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