Return to Video

We Have Intercepted A Secret Message

  • 0:01 - 0:05
    まずdecodeメソッドを
    どのように使うか見てみましょう
  • 0:05 - 0:10
    このメソッドは解読したメッセージの入った
    Stringオブジェクトを返します 引数は不要です
  • 0:10 - 0:19
    ではdecoder.decodeメソッドの実行結果を
    DecoderTesterクラス内で出力したいと思います
  • 0:19 - 0:24
    decoderオブジェクトはすでに暗号化された
    メッセージの文字列と共に生成されており
  • 0:24 - 0:28
    文字列を再度引き渡す必要はありません
    ではDecoderクラスに戻りましょう
  • 0:28 - 0:34
    ゼロ番目から始めて10番目ごとの文字を読む
    forループを書く必要があります
  • 0:34 - 0:36
    文字列を解読しているのでインデックスが
  • 0:36 - 0:41
    その長さに満たない限り処理を繰り返します
    変数encodeMessageは解読中の文字列です
  • 0:41 - 0:45
    変数iは毎回1ずつではなく
    10ずつインクリメントするので
  • 0:45 - 0:52
    10番目ごとの文字だけを見ることができます
    ループの中で繰り返すことは
  • 0:52 - 0:58
    i番目の文字を読むことと
    その文字を変数decodedMessageに付け足すことです
  • 0:58 - 1:03
    そしてdecodedMessage = encodedMessage +
    encodedMessage.substring(i,i+1)となります
  • 1:03 - 1:09
    覚えておいてください これが
    より長い文字列から1文字を取り出す方法です
  • 1:09 - 1:13
    うまくいくか見てみましょう
    さらに秘密のメッセージがあるようです
  • 1:13 - 1:15
    それを知るには別のインデックスで始めます
  • 1:15 - 1:19
    起こり得るいくつかのバグについて
    少しお話ししましょう
  • 1:19 - 1:24
    もし間違ってここをこのように
    小なりイコールと書いてしまうと
  • 1:24 - 1:29
    文字列の範囲外例外が発生するかもしれません
    それは変数encodedMessageの
  • 1:29 - 1:34
    長さより大きいインデックスに
    アクセスしようとした時に発生します
  • 1:34 - 1:38
    範囲外例外はランタイムエラーです
    プログラムを止めて
  • 1:38 - 1:42
    存在しない値にアクセスしていると警告します
  • 1:42 - 1:47
    警告もなくプログラムの結果が
    めちゃくちゃになるよりずっといいです
  • 1:47 - 1:51
    正しいけれど少し不格好な条件式を
    書くこともできます
  • 1:51 - 1:56
    例えばi <= encodedMessage.length()
    - 1です これでも機能しますが
  • 1:56 - 2:01
    あまりすっきりしていません
    文字列を反復処理する場合は
  • 2:01 - 2:05
    i < encodedMessage.Length()
    とするのがベストです
Title:
We Have Intercepted A Secret Message
Description:

more » « less
Video Language:
English
Team:
Udacity
Project:
cs046: Intro to Programming
Duration:
02:05

Japanese subtitles

Revisions