"চালিয়ে যাওয়া" কীওয়ার্ডটি কী এবং জাভাতে এটি কীভাবে কাজ করে?


302

আমি এই কীওয়ার্ডটি প্রথমবার দেখলাম এবং আমি ভাবছিলাম যে কেউ যদি আমাকে এটির ব্যাখ্যা দেয় তবে তা কী করে।

  • মূল continueশব্দটি কী ?
  • এটা কিভাবে কাজ করে?
  • এটি কখন ব্যবহৃত হয়?

উত্তর:


416

লেবেলবিহীন একটি continueবিবৃতি শর্তটি অন্তঃস্থল whileবা doলুপ এবং অভ্যন্তরীণ forলুপের আপডেট এক্সপ্রেশন থেকে পুনরায় কার্যকর করবে । এটি প্রায়শই একটি লুপের প্রক্রিয়াজাতকরণ প্রারম্ভিক-অবসান করতে ব্যবহৃত হয় এবং এর ফলে গভীর-নেস্টেড ifবিবৃতি এড়ানো যায় । নীচের উদাহরণে continueলুপটিতে নিম্নলিখিত বিবৃতিটি প্রক্রিয়া না করে পরবর্তী লাইনটি পাবেন।

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

একটি লেবেল সহ, continueঅন্তর্হীন লুপের পরিবর্তে লুপ থেকে সংশ্লিষ্ট লেবেলের সাথে পুনরায় সম্পাদন করবে। এটি গভীরভাবে নেস্ট করা লুপগুলি এড়াতে বা কেবল স্পষ্টতার জন্য ব্যবহার করা যেতে পারে।

continueখালি লুপের শরীরে আরও পরিষ্কার করার জন্য মাঝে মাঝে স্থানধারক হিসাবেও ব্যবহৃত হয়।

for (count = 0; foo.moreData(); count++)
  continue;

লেবেল ছাড়া একই বিবৃতি সি এবং সি ++ এও বিদ্যমান। পার্লের সমতুল্য next

এই ধরণের নিয়ন্ত্রণ প্রবাহের প্রস্তাব দেওয়া হয় না, তবে আপনি যদি এটি চয়ন করেন তবে আপনি continueসীমিত আকারের সিমুলেট করতেও ব্যবহার করতে পারেন goto। নিম্নলিখিত উদাহরণে continueখালি for (;;)লুপটি আবার কার্যকর করবে ।

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;

513

continueমত মত goto। আপনি কি সাথে পরিচিত break? বিপরীতে তাদের সম্পর্কে চিন্তা করা সহজ:

  • break লুপটি সমাপ্ত করে (এর নীচে কোডে লাফ দেয়)।

  • continue বর্তমান পুনরাবৃত্তির জন্য লুপের মধ্যে কোডের বাকী প্রসেসিংটি সমাপ্ত করে, তবে লুপটি চালিয়ে যায়।


1
বিরতি এবং অব্যাহত রাখার জন্য ভাল উদাহরণ, আমি ভেবেছিলাম> এর আগে এটি একই রকম ছিল। <
yfsx

এটি একটি দুর্দান্ত নিখুঁত 500 না করা অসম্ভব! +1
টুপি

100

আসুন একটি উদাহরণ দেখুন:

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

এটি 1 থেকে 100 পর্যন্ত কেবল বিজোড় সংখ্যার যোগফল পাবে।


28

আপনি যদি একটি লুপের বডিটিকে সাবরুটিন হিসাবে মনে করেন তবে continueএটি সাজানোর মতো return। সি তে একই কীওয়ার্ড বিদ্যমান এবং এটি একই উদ্দেশ্যে কাজ করে। এখানে একটি স্বীকৃত উদাহরণ:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

এটি কেবল বিজোড় সংখ্যা মুদ্রণ করবে।


16

সাধারণত, আমি দেখতে continue(এবং breakএকটি সতর্কবার্তা যে কোড হিসাবে) পারে কিছু refactoring ব্যবহার করেন, বিশেষ করে যদি whileবা forলুপ ঘোষণা দৃষ্টিতে অবিলম্বে নয়। একই returnপদ্ধতিটি একটি পদ্ধতির মাঝখানে হলেও কিছুটা ভিন্ন কারণে।

অন্যরা যেমন ইতিমধ্যে বলেছে, continueলুপের পরবর্তী পুনরাবৃত্তির সাথে breakসরানো হয় , যখন ঘেরযুক্ত লুপের বাইরে চলে যায়।

এগুলি রক্ষণাবেক্ষণের টাইমবম্ব হতে পারে কারণ continue/ breakএবং লুপের মধ্যে অবিলম্বে কোনও সংযোগ নেই যা প্রাসঙ্গিকতা ছাড়া অন্যটি অব্যাহত / ভাঙ্গছে; একটি অভ্যন্তরীণ লুপ যুক্ত করুন বা লুপের "সাহস" একটি পৃথক পদ্ধতিতে সরান এবং আপনি continue/ breakব্যর্থতার একটি গোপন প্রভাব রয়েছে ।

আইএমএইচও, সর্বশেষ অবলম্বনের পরিমাপ হিসাবে এগুলি ব্যবহার করা সর্বোত্তম, এবং তারপরে লুপের শুরু বা শেষের দিকে তাদের ব্যবহারগুলি একত্রে শক্তভাবে শ্রেণিবদ্ধ করা হয়েছে তা নিশ্চিত করা যাতে পরবর্তী বিকাশকারী একটি স্ক্রিনে লুপটির "সীমানা" দেখতে পারে ।

continue, breakএবং return(আপনার পদ্ধতির শেষে ওয়ান ট্রু রিটার্ন ব্যতীত) সমস্তগুলি "লুকানো জিওটিও" এর সাধারণ বিভাগে আসে। তারা অপ্রত্যাশিত স্থানে লুপ এবং ফাংশন নিয়ন্ত্রণ স্থাপন করে, যার ফলে শেষ পর্যন্ত বাগগুলি ঘটে।


ফিরে আসার কারণ খারাপ হওয়ায় আমি আগ্রহী। আমার ইতিমধ্যে অনুভূতি আছে যে রিটার্ন খারাপ কারণ স্কালা রিটার্নগুলিকে উত্সাহ দেয় না
Jus12

1
অন্যদিকে, গভীরভাবে নেস্ট করা লুপ থেকে কোনও পদ্ধতির ফিরে আসা কেবল লুপের প্রস্থানটিকে আরও পরিষ্কার দেখানোর জন্য অতিরিক্ত ভেরিয়েবল তৈরি না করে কাজগুলি করার সহজতম, সবচেয়ে পঠনযোগ্য এবং সবচেয়ে যুক্তিসঙ্গত উপায় হতে পারে।
ডেভিড আর ট্রাইবল

5

জাভাতে "চালিয়ে যান" এর অর্থ বর্তমান লুপটির শেষে যান, এর অর্থ: সংকলকটি যদি একটি লুপটিতে চালিয়ে যেতে দেখেন তবে এটি পরবর্তী পুনরাবৃত্তিতে যায়

উদাহরণ: 1 থেকে 10 পর্যন্ত বিজোড় সংখ্যাগুলি মুদ্রণের জন্য এটি একটি কোড

সংকলকটি মুদ্রণ কোডটিকে অগ্রাহ্য করবে যখনই এটি পরের পুনরাবৃত্তির দিকে চলতে দেখবে

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}


4

ইতিমধ্যে উল্লিখিত হিসাবে continueএটি নীচের কোড এবং লুপ শেষ অবধি প্রসেসিং এড়ানো হবে। তারপরে, আপনি লুপের অবস্থার দিকে চলে যান এবং যদি এই শর্তটি এখনও ধরে রাখে (বা যদি কোনও পতাকা থাকে তবে চিহ্নিত লুপের শর্তে) পরবর্তী পুনরাবৃত্তিটি চালান।

এটি অবশ্যই হাইলাইট করা উচিত যে আপনার ক্ষেত্রে লুপের শুরুতে নয়, do - whileএকের পরে নীচে অবস্থিত অবস্থানে সরিয়ে নেওয়া হয়েছে continue

এই কারণেই অনেক লোক নিম্নলিখিত কোডটি কী উত্পন্ন করবে তা সঠিকভাবে উত্তর দিতে ব্যর্থ।

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

* যদি আপনার aSetউত্তরটিতে বিজোড় সংখ্যাগুলি থাকে তবে কেবল 100% ... আপনি ভুল!


4

চালিয়ে যাওয়া জাভাতে একটি কীওয়ার্ড এবং এটি বর্তমান পুনরাবৃত্তিটি এড়াতে ব্যবহৃত হয়।

মনে করুন আপনি 1 থেকে 100 পর্যন্ত সমস্ত বিজোড় সংখ্যা মুদ্রণ করতে চান

public class Main {

    public static void main(String args[]) {

    //Program to print all odd numbers from 1 to 100

        for(int i=1 ; i<=100 ; i++) {
            if(i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }

    }
}

অবিরত উপরে প্রোগ্রামে বিবৃতি কেবল পুনরাবৃত্তির অগ্রাহ্য যখন আমি এমনকি এবং এর মান ছাপে আমি যখন এটা বিজোড় হয়।

চালিয়ে যাওয়া বিবৃতিটি কেবল লুপের ভিতরে থাকা বাকী বিবৃতিগুলি কার্যকর না করে আপনাকে লুপ থেকে বাইরে নিয়ে যায় এবং পরবর্তী পুনরাবৃত্তিকে ট্রিগার করে।


3

অন্য কোনও শর্ত বিবেচনা করুন। একটি অবিরত বিবৃতি শর্তের মধ্যে যা আছে তা কার্যকর করে এবং শর্ত থেকে বেরিয়ে যায় অর্থাৎ পরবর্তী পুনরাবৃত্তি বা শর্তে লাফ দেয়। তবে একটি ব্রেক লুপ ছেড়ে যায়। নিম্নলিখিত প্রোগ্রাম বিবেচনা করুন। '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

এটি মুদ্রণ করবে: লুপের বাইরে আ সিসি।

আপনি যদি চালিয়ে যাওয়ার জায়গায় বিরতি ব্যবহার করেন (যদি পরে), এটি কেবল আ এবং লুপের বাইরে মুদ্রণ করবে ।

"বিবি" এর সমতুল্য এসএস সন্তুষ্ট হলে: চালিয়ে যাওয়ার জন্য: এটি পরবর্তী পুনরাবৃত্তিতে অর্থাৎ "সিসি"। বিরতির জন্য: এটি লুপ থেকে বেরিয়ে আসে এবং "লুপের বাইরে" মুদ্রণ করে।


2
! চমত্কার নিশ্চিত এটি যেহেতু "CC" CC প্রিন্ট হবে = "BB" এবং মুদ্রণ বিবৃতি করার আগেbreak
টেড Delezene

2

আমি পার্টিতে কিছুটা দেরি করেছি, কিন্তু ...

এটি উল্লেখ করার মতো যে continueখালি লুপগুলির জন্য দরকারী যেখানে লুপটি নিয়ন্ত্রণ করে সমস্ত কাজ শর্তাধীন অভিব্যক্তিতে হয়। উদাহরণ স্বরূপ:

while ((buffer[i++] = readChar()) >= 0)
    continue;

এই ক্ষেত্রে, একটি চরিত্র পড়ার এবং এটিকে সংযোজন করার bufferসমস্ত কাজ whileলুপকে নিয়ন্ত্রণ করে এমন অভিব্যক্তিতে সম্পন্ন হয় । continueবিবৃতি যে লুপ একটি শরীরের প্রয়োজন নেই একটি চাক্ষুষ সূচক হিসেবে কাজ করে।

এটি সমমানের চেয়ে কিছুটা স্পষ্ট:

while (...)
{ }

এবং খালি বিবৃতি ব্যবহারের চেয়ে অবশ্যই কোডিং শৈলীর চেয়ে ভাল (এবং নিরাপদ):

while (...)
    ;

আমি অবশ্যই স্বীকার করি যে এটি ক্লিনার এবং আরও পঠনযোগ্য কোড, তবে আমি নিশ্চিত নই যে এটি অন্য বিকল্পের চেয়ে "নিরাপদ" হওয়ার বিষয়ে আপনার যুক্তিটি আমি অনুসরণ করেছি, যখন (বিবৃতি); একটি সেমিকোলন ব্যবহার করে সরাসরি সীমিত।
অ্যাকালোলটল

@ অ্যালোক - এটি নিরাপদ কারণ একাকী সেমিকোলনটি চাক্ষুষভাবে মিস করা সহজ। দুর্ঘটনাক্রমে এটি ছেড়ে দেওয়াও সহজ, যা পরবর্তী দফায় দফার whileমূল অংশ হয়ে যাওয়ার পরে পরবর্তী বিবৃতি দেয় whileএবং এটি দৃশ্যত সুস্পষ্ট হবে না। একটি সুস্পষ্ট continueস্পষ্ট এবং একটি অভিপ্রায় প্রকাশ করে যা খালি বিবৃতি দেয় না।
ডেভিড আর ট্রিবিবল

আমি দেখতে পাচ্ছি, সুতরাং আপনি মূলত ডিজাইনের দৃষ্টিকোণ থেকে বোঝাচ্ছেন। এটা বোধগম্য. লুপটি যেভাবে মনের মতো কাঠামোবদ্ধ হয়েছে তার সাথে আমার কিছু অন্তর্নিহিত ছিল।
অ্যাকোলোটল

1

মূলত জাভাতে, চালিয়ে যাওয়া একটি বিবৃতি। সুতরাং চলমান পুনরাবৃত্তিটি এড়াতে লুপগুলির সাথে চালিয়ে যাওয়া স্টেটমেন্টটি সাধারণত ব্যবহৃত হয়।

এটি কখন এবং কখন জাভাতে ব্যবহৃত হয় তার জন্য নীচের লিঙ্কটি দেখুন। এটি উদাহরণ সহ ব্যাখ্যা পেয়েছে।

https://www.flowerbrackets.com/continue-java-example/

আশা করি এটা সাহায্য করবে !!


0

continue অবশ্যই একটি লুপের ভিতরে থাকা উচিত অন্যথায় এটি ত্রুটিটি দেখায়:

লুপের বাইরে চালিয়ে যান


0

অবিলম্বে বিবৃতিটি লুপ নিয়ন্ত্রণ কাঠামোতে ব্যবহৃত হয় যখন আপনাকে অবিলম্বে লুপের পরবর্তী পুনরাবৃত্তিতে ঝাঁপ দিতে হবে।

এটি লুপের জন্য বা লুপের সময় ব্যবহার করা যেতে পারে। জাভা চালিয়ে যাওয়া বিবৃতিটি লুপটি চালিয়ে যাওয়ার জন্য ব্যবহৃত হয়। এটি প্রোগ্রামের বর্তমান প্রবাহকে অব্যাহত রাখে এবং নির্দিষ্ট কোডে অবশিষ্ট কোডটি এড়িয়ে যায়।

অভ্যন্তরীণ লুপের ক্ষেত্রে এটি কেবলমাত্র অভ্যন্তরীণ লুপটি চালিয়ে যায়।

আমরা জাভা ক্রমাগত বিবৃতি সমস্ত ধরণের লুপ যেমন লুপের জন্য, যখন লুপ এবং ডু-উইল লুপ ব্যবহার করতে পারি।

উদাহরণ স্বরূপ

class Example{
    public static void main(String args[]){
        System.out.println("Start");
        for(int i=0; i<10; i++){
            if(i==5){continue;}
            System.out.println("i : "+i);   
        }
        System.out.println("End.");
    }
}

আউটপুট:

Start
i : 0
i : 1
i : 2
i : 3
i : 4
i : 6
i : 7
i : 8
i : 9
End.

[5 নম্বর বাদ দেওয়া]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.