العبارات المعنونة
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 35 من 59.
تسمح لك جمل التسمية (Label statements) في Java بتمييز نقاط محددة في الكود الخاص بك والتحكم في التدفق باستخدام جمل break و continue مع هذه التسميات. وتعتبر التسميات مفيدة بشكل خاص عند التعامل مع الحلقات المتداخلة.
قم بإنشاء حلقة متداخلة مع تسمية (label):
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}استخدم continue مع تسمية (label):
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}التحدي
سهلقم بإنشاء طريقة تسمى findNumber تأخذ ثلاث وسائط:
- مصفوفة ثنائية الأبعاد من الأعداد الصحيحة (
grid) - عدد صحيح (
target) للبحث عنه - قيمة منطقية (
breakEarly) تحدد ما إذا كان يجب أن يتوقف البحث بعد العثور على أول ظهور. يجب أن تستخدم الطريقة حلقة تكرار مسماة (labeled loop) للبحث عن الرقم المستهدف وطباعة كل موقع يتم العثور عليه فيه. إذا كانت قيمة breakEarly هي true، فيجب أن تتوقف بعد العثور على أول ظهور. يجب طباعة كل عنصر يتم العثور عليه بالتنسيق التالي:Found at: rowIndex,colIndex
ورقة مرجعية
تسمح لك عبارات التسمية (Label statements) في Java بتمييز نقاط محددة في التعليمات البرمجية الخاصة بك والتحكم في التدفق باستخدام عبارات break و continue مع هذه التسميات.
إنشاء حلقة متداخلة مع تسمية:
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}استخدام continue مع تسمية:
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}جرّب بنفسك
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static void findNumber(int[][] grid, int target, boolean breakEarly) {
// اكتب كودك هنا
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// قراءة سلسلة JSON التي تمثل مصفوفة ثنائية الأبعاد
String gridString = scanner.nextLine();
// قراءة الرقم المستهدف
int target = Integer.parseInt(scanner.nextLine());
// قراءة علم الإنهاء المبكر (breakEarly)
boolean breakEarly = Boolean.parseBoolean(scanner.nextLine());
Type gridType = new TypeToken<int[][]>(){}.getType();
int[][] grid = new Gson().fromJson(gridString, gridType);
findNumber(grid, target, breakEarly);
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم