JavaRush /Blog Jawa /Random-JV /Opsi kanggo ngrampungake masalah level 19 tugas 16 (ngawa...

Opsi kanggo ngrampungake masalah level 19 tugas 16 (ngawasi owah-owahan)

Diterbitake ing grup

Latar mburi:

Aku ngatasi masalah iki kanggo wektu sing suwe . Ing iku perlu kanggo mbandhingaké 2 versi file lan golek owah-owahan. Aku mutusake kanggo ngekstrak isi file ing wangun array lan mbandhingake array. Banjur aku bodho kanggo dangu lan nggawe kesalahane lan ing pungkasan aku tarik array ing Piece saka kertas ing kothak. Bener, sadurunge iki aku ndeleng solusi liyane . Nanging rumit banget aku ora bisa nguwasani :) Kajaba iku, ana 2 algoritma sing beda-beda yen file lawas luwih dawa lan yen file anyar luwih dawa. Aku ora seneng.

Inti saka solusiku:

Ana 2 susunan sing padha. Saindhenging teks aku bakal nyebataken "array anyar" lan "arrayed lawas". Lan unsur anyar bisa dilebokake ing saben. Sing. Array referensi dianggep minangka sing cocog karo isi file lawas kanthi kabeh pambusakan. Isi file lawas lan anyar dianggep minangka referensi karo sisipan. We mbukak liwat loro array (isi lawas lan anyar) ing daur ulang. Lan yen kita ndeteksi selipan ing salah siji saka wong-wong mau, banjur kita skip siji langkah supaya unsur padha saka array dibandhingake maneh cedhak.

Algoritma:

Variabel: i - indeks sel array karo isi file OLD. nI - indeks sel array karo isi file NEW. Yen unsur array beda-beda, kita nulis menyang variabel sauntara: oldMismatch - unsur saka array sing ditumpuk newMismatch - unsur saka array anyar Nalika ngulang unsur array, kasus ing ngisor iki bisa uga:
  1. variabel oldMismatch lan newMismatch kosong. Unsur ing rong susunan padha. Tulis Type.SAME menyang dhaptar. Terusna.

  2. variabel oldMismatch lan newMismatch kosong. Unsur ing rong susunan ora padha. Kita nulis nilai saka lawas menyang oldMismatch, saka anyar kanggo newMismatch. Terusna.

  3. variabel oldMismatch lan newMismatch ora kosong. Kita mbandhingake karo unsur array saiki.

    Ayo nggawe kesimpulan. Kita nulis temuan menyang dhaptar (variabel garis). Kita ngliwati langkah daur ulang kanggo salah sawijining susunan.

    1. 3.1 oldMismatch padha karo unsur saiki saka array NEW. Iki tegese baris ditambahake menyang file.

      Nilai string iki disimpen ing newMismatch. Ayo ditulis kaya ngono.

      lines.add(new LineItem(Type.ADDED, newMismatch));
      lines.add(new LineItem(Type.SAME, oldMismatch));

      Wiwit ana unsur tambahan ing Uploaded ngemot isi file anyar, sampeyan kudu mindhah Uploaded anyar 1 unsur maju relatif kanggo lawas.

      Mulane, array OLD ngliwati 1 langkah loop.

      aku--;

    2. 3.2 newMismatch padha karo unsur saiki saka larik OLD. Iki tegese baris wis dibusak saka file. Ayo ditulis mudhun.

      lines.add(new LineItem(Type.REMOVED, oldMismatch));
       lines.add(new LineItem(Type.SAME, newMismatch));

      Ana unsur tambahan ing larik OLD. Iki tegese array NEW ngliwati 1 langkah loop.

      ni--;

  4. Ngolah pungkasan array. Lan saiki kita wis teka ing mburi array lawas. Ana sawetara kahanan sing bisa ditindakake

    1. 4.1 - ArrayIndexOutOfBoundsException - array anyar luwih cendhek tinimbang sing lawas. Kita ngrekam yen baris pungkasan file wis dibusak.

    2. 4.2 - Unsur pungkasan saka array anyar tetep, ora dilindhungi dening perhatian kita. Kita ngrekam minangka ditambahake.

    3. 4.3 - Variabel oldMismatch lan newMismatch ora kosong. Kita nulis:

      lines.add(new LineItem(Type.ADDED, newMismatch));
      lines.add(new LineItem(Type.SAME, oldMismatch));
PS - aja lali ngreset variabel lan nglacak variabel nI.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION