2D डेटा की सफाई और सत्यापन
2D पूर्णांक डेटा को साफ़ और सत्यापित कीजिए: null पंक्तियों से बचाव, इंडेक्स की सीमा-जाँच, सीमा से बाहर के मानों को सीमित करना, असमान आकारों को सामान्य बनाना और सत्यापन रिपोर्ट तैयार करना
2D डेटा की सफाई और सत्यापन, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 6 में से 6वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 6 पाठ शामिल हैं।
द्विविमीय डेटा को साफ़ क्यों करें
लक्ष्य: द्विविमीय पूर्णांक डेटा को सुरक्षित और एकसमान बनाना। हम (1) शून्य-संदर्भ वाली पंक्तियों की जाँच करेंगे, (2) हर पंक्ति की सीमाओं की पुष्टि करेंगे, (3) मानों को मान्य परास में सीमित करेंगे, (4) आवश्यकता होने पर असमान आकारों को सामान्य करेंगे और (5) सत्यापन रिपोर्ट तैयार करेंगे।
शून्य-संदर्भ और सीमाएँ
चरण 1: शून्य-संदर्भ वाली पंक्तियों को खाली सरणियों से बदलें और मानों की सावधानीपूर्वक प्रतिलिपि बनाएँ। हर पंक्ति की लंबाई की जाँच करने वाला inBounds सहायक दें।
public class Main {
// Make a defensive copy of m. Replace null rows with empty arrays.
static int[][] copyOrEmpty(int[][] m) {
if (m == null) return new int[0][0];
int[][] out = new int[m.length][];
for (int r = 0; r < m.length; r = r + 1) {
if (m[r] == null) {
out[r] = new int[0];
} else {
out[r] = new int[m[r].length];
for (int c = 0; c < m[r].length; c = c + 1) out[r][c] = m[r][c];
}
}
return out;
}
// Safe bounds check for jagged matrices
static boolean inBounds(int[][] m, int r, int c) {
return m != null && r >= 0 && r < m.length && m[r] != null && c >= 0 && c < m[r].length;
}
public static void main(String[] args) {
int[][] raw = new int[][] { null, {1, 2, 3}, {4} };
int[][] cleaned = copyOrEmpty(raw);
System.out.println("rows = " + cleaned.length);
for (int r = 0; r < cleaned.length; r = r + 1) System.out.println("row " + r + " len = " + cleaned[r].length);
System.out.println("inBounds(1,2) = " + inBounds(cleaned, 1, 2)); // true
System.out.println("inBounds(2,2) = " + inBounds(cleaned, 2, 2)); // false
}
}
मानों को सीमित करना
चरण 2: मानों को मान्य परास में सीमित करें, जैसे 0–100। अमान्य ऋणात्मक मान 0 बन जाएँ और बहुत बड़े मान 100 बन जाएँ।
public class Main {
static int clamp(int v, int lo, int hi) { if (v < lo) return lo; if (v > hi) return hi; return v; }
static void clampAll(int[][] m, int lo, int hi) {
if (m == null) return;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r] == null) continue;
for (int c = 0; c < m[r].length; c = c + 1) m[r][c] = clamp(m[r][c], lo, hi);
}
}
static void print(int[][] m) {
for (int r = 0; r < m.length; r = r + 1) {
if (m[r] == null) { System.out.println("<null row>"); continue; }
for (int c = 0; c < m[r].length; c = c + 1) System.out.print(m[r][c] + (c + 1 < m[r].length ? " " : ""));
System.out.println();
}
}
public static void main(String[] args) {
int[][] m = { { -5, 101, 50 }, null, { 200 } };
System.out.println("before clamp:");
print(m);
clampAll(m, 0, 100);
System.out.println("after clamp [0..100]:");
print(m);
}
}
आकार सामान्य करना
चरण 3: हर छोटी (या शून्य-संदर्भ वाली) पंक्ति को सबसे लंबी पंक्ति की लंबाई तक एक पूरक मान, जैसे 0, से भरकर आयताकार आकार में सामान्य करें।
public class Main {
static int[][] padToMaxCols(int[][] m, int pad) {
if (m == null) return new int[0][0];
int rows = m.length;
int maxCols = 0;
for (int r = 0; r < rows; r = r + 1) if (m[r] != null && m[r].length > maxCols) maxCols = m[r].length;
int[][] out = new int[rows][maxCols];
for (int r = 0; r < rows; r = r + 1) {
int cols = (m[r] == null) ? 0 : m[r].length;
for (int c = 0; c < cols; c = c + 1) out[r][c] = m[r][c];
for (int c = cols; c < maxCols; c = c + 1) out[r][c] = pad; // pad missing cells
}
return out;
}
static void print(int[][] x) {
for (int r = 0; r < x.length; r = r + 1) {
for (int c = 0; c < x[r].length; c = c + 1) System.out.print(x[r][c] + (c + 1 < x[r].length ? " " : ""));
System.out.println();
}
}
public static void main(String[] args) {
int[][] jag = { {1, 23, 456}, {7, 8}, null, {90} };
int[][] rect = padToMaxCols(jag, 0);
print(rect);
}
}
सत्यापन रिपोर्ट
चरण 4: एक सत्यापन रिपोर्ट बनाएँ: ऋणात्मक मानों, बहुत बड़े मानों, शून्य-संदर्भ वाली पंक्तियों और देखे गए कुल खानों की संख्या गिनें।
public class Main {
static class Report { int negatives; int overMax; int nullRows; int cells; }
static Report validate(int[][] m, int hi) {
Report r = new Report();
if (m == null) return r;
for (int i = 0; i < m.length; i = i + 1) {
if (m[i] == null) { r.nullRows = r.nullRows + 1; continue; }
for (int j = 0; j < m[i].length; j = j + 1) {
int v = m[i][j];
r.cells = r.cells + 1;
if (v < 0) r.negatives = r.negatives + 1;
if (v > hi) r.overMax = r.overMax + 1;
}
}
return r;
}
public static void main(String[] args) {
int[][] m = { { -5, 101, 50 }, null, { 200 } };
Report r = validate(m, 100);
System.out.println("cells=" + r.cells + ", negatives=" + r.negatives + ", overMax=" + r.overMax + ", nullRows=" + r.nullRows);
}
}
शून्य-संदर्भ वाली पंक्तियों को छोड़कर प्रिंट करना
चरण 5: ऐसा संरेखित प्रिंटिंग विकल्प दें जो शून्य-संदर्भ वाली पंक्तियों को सहजता से छोड़ दे और हर पंक्ति की लंबाई का ध्यान रखे।
public class Main {
static boolean inBounds(int[][] m, int r, int c) {
return m != null && r >= 0 && r < m.length && m[r] != null && c >= 0 && c < m[r].length;
}
static int[] widths(int[][] m) {
int maxCols = 0; if (m == null) return new int[0];
for (int r = 0; r < m.length; r = r + 1) if (m[r] != null && m[r].length > maxCols) maxCols = m[r].length;
int[] w = new int[maxCols];
for (int r = 0; r < m.length; r = r + 1) {
if (m[r] == null) continue;
for (int c = 0; c < m[r].length; c = c + 1) {
int len = Integer.toString(m[r][c]).length();
if (len > w[c]) w[c] = len;
}
}
for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
return w;
}
static void printAlignedSkipNull(int[][] m) {
int[] w = widths(m);
for (int r = 0; r < m.length; r = r + 1) {
if (m[r] == null) { System.out.println("<skipped null row>"); continue; }
String line = "";
for (int c = 0; c < m[r].length; c = c + 1) {
String s = Integer.toString(m[r][c]);
while (s.length() < w[c]) s = " " + s;
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}
}
public static void main(String[] args) {
int[][] m = { { 1, 200, -3 }, null, { 45 } };
printAlignedSkipNull(m);
}
}
सुरक्षित पहुँच जाँच
त्वरित जाँच: संभावित रूप से असमान डेटा पर m[r][c] तक सुरक्षित रूप से कैसे पहुँचेंगे?
पुनरावलोकन और अगला चरण
पुनरावलोकन: आपने डेटा की सावधानीपूर्वक प्रतिलिपि बनाई, सूचकांकों की सीमाओं की जाँच की, मानों को सीमित किया, असमान आकारों को सामान्य किया और सत्यापन सारांश बनाए। ये आधारभूत हिस्से आगे के द्विविमीय एल्गोरिदम को मजबूत बनाते हैं।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “2D डेटा की सफाई और सत्यापन” पाठ निःशुल्क है?
हाँ—“2D डेटा की सफाई और सत्यापन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 6 पाठ शामिल हैं।
“2D डेटा की सफाई और सत्यापन” में मैं क्या सीखूँगा?
2D पूर्णांक डेटा को साफ़ और सत्यापित कीजिए: null पंक्तियों से बचाव, इंडेक्स की सीमा-जाँच, सीमा से बाहर के मानों को सीमित करना, असमान आकारों को सामान्य बनाना और सत्यापन रिपोर्ट तैयार करना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 6 में से 6वाँ पाठ है।
“2D डेटा की सफाई और सत्यापन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- 2D ऐरे की बुनियादी बातें और नेस्टेड पुनरावृत्ति
- असमान लंबाई वाले ऐरे और सारणी स्वरूपण
- पंक्ति/स्तंभ अधिकतम, ट्रांसपोज़ और स्वरूपण
- 2D छोटा प्रोजेक्ट: ग्रेडबुक
- सहायक class के रूप में 2D यूटिलिटी (रिफैक्टर)
- 2D डेटा की सफाई और सत्यापन