java.lang.ArrayIndexOutOfBoundsExceptionの原因とそれを防ぐにはどうすればよいですか?

311
Aaron 2011-04-06 05:54.

どういうArrayIndexOutOfBoundsException意味ですか、どうすればそれを取り除くことができますか?

例外をトリガーするコードサンプルを次に示します。

String[] names = { "tom", "bob", "harry" };
for (int i = 0; i <= names.length; i++) {
    System.out.println(names[i]);
}

24 answers

306
Jon Skeet 2011-04-06 05:57.

最初の寄港地は、それを合理的に明確に説明する文書でなければなりません。

配列が不正なインデックスでアクセスされたことを示すためにスローされます。インデックスは負であるか、配列のサイズ以上です。

したがって、たとえば:

int[] array = new int[5];
int boom = array[10]; // Throws the exception

それを回避する方法については...ええと、それをしないでください。配列インデックスに注意してください。

人々が時々遭遇する問題の1つは、配列が1インデックスであると考えることです。

int[] array = new int[5];
// ... populate the array here ...
for (int index = 1; index <= array.length; index++)
{
    System.out.println(array[index]);
}

これにより、最初の要素(インデックス0)が欠落し、インデックスが5の場合に例外がスローされます。ここでの有効なインデックスは0〜4です。ここでの正しい慣用句forは次のようになります。

for (int index = 0; index < array.length; index++)

(もちろん、インデックスが必要であると想定しています。代わりに拡張forループを使用できる場合は、そうしてください。)

54
BalusC 2011-04-06 05:59.
if (index < 0 || index >= array.length) {
    // Don't use this index. This is out of bounds (borders, limits, whatever).
} else {
    // Yes, you can safely use this index. The index is present in the array.
    Object element = array[index];
}

参照:

  • Javaチュートリアル-言語の基本-配列

更新:コードスニペットに従って、

for (int i = 0; i<=name.length; i++) {

インデックスには、配列の長さが含まれます。これは範囲外です。あなたは交換する必要がある<=ことで<

for (int i = 0; i < name.length; i++) {
24
aioobe 2011-04-06 06:15.

この優れた記事から:forループのArrayIndexOutOfBoundsException

簡単に言えば:

の最後の反復で

for (int i = 0; i <= name.length; i++) {

i等しくなるname.length配列のインデックスは、ゼロベースであるため、不正指標です。

あなたのコードは読むべきです

for (int i = 0; i < name.length; i++) 
                  ^
18
Octavian A. Damiean 2011-04-06 05:55.

これは、境界の間にないために無効な配列のインデックスにアクセスしようとしていることを意味します。

たとえば、これは上限4でプリミティブ整数配列を初期化します。

int intArray[] = new int[5];

プログラマーはゼロから数えます。したがって、これは、たとえばArrayIndexOutOfBoundsException、上限が5ではなく4であるため、をスローします。

intArray[5];
12
Makoto 2015-10-17 11:45.

配列インデックスの範囲外の例外を回避するには、可能な場合はいつでも、enhanced-forステートメントを使用する必要があります。

主な動機(およびユースケース)は、反復を行っており、複雑な反復ステップを必要としない場合です。あなたはなりませんenhanced-を使用することができるfor配列に後方移動したりのみ、他のすべての要素で反復します。

これを行うときに、反復する要素が不足しないことが保証されており、[修正された]例は簡単に変換されます。

以下のコード:

String[] name = {"tom", "dick", "harry"};
for(int i = 0; i< name.length; i++) {
    System.out.print(name[i] + "\n");
}

...これと同等です:

String[] name = {"tom", "dick", "harry"};
for(String firstName : name) {
    System.out.println(firstName + "\n");
}
12
Tobb 2016-01-20 06:55.

何が原因ArrayIndexOutOfBoundsExceptionですか?

変数を値を配置できる「ボックス」と考える場合、配列は隣り合って配置された一連のボックスであり、ボックスの数は有限で明示的な整数です。

次のような配列を作成します。

final int[] myArray = new int[5]

それぞれがを保持する5つのボックスの行を作成しますint。各ボックスには、一連のボックス内の位置であるインデックスがあります。このインデックスは0で始まり、N-1で終わります。ここで、Nは配列のサイズ(ボックスの数)です。

この一連のボックスから値の1つを取得するには、次のように、インデックスを介して値を参照できます。

myArray[3]

これにより、シリーズの4番目のボックスの値が得られます(最初のボックスのインデックスは0であるため)。

ArrayIndexOutOfBoundsException最後に、「ボックス」、または負の屈折率より高いインデックスを渡すことによって、存在しない「ボックス」をretriveしようとによって引き起こされます。

私の実行例では、これらのコードスニペットは次のような例外を生成します。

myArray[5] //tries to retrieve the 6th "box" when there is only 5
myArray[-1] //just makes no sense
myArray[1337] //waay to high

回避する方法 ArrayIndexOutOfBoundsException

を防ぐためにArrayIndexOutOfBoundsException、考慮すべきいくつかの重要なポイントがあります。

ループ

配列をループするときは、取得するインデックスが配列の長さ(ボックスの数)よりも厳密に小さいことを常に確認してください。例えば:

for (int i = 0; i < myArray.length; i++) {

に注意してください<、決して=そこに混ぜないでください。

あなたはこのようなことをしたくなるかもしれません:

for (int i = 1; i <= myArray.length; i++) {
    final int someint = myArray[i - 1]

しないでください。上記のものに固執すると(インデックスを使用する必要がある場合)、多くの苦痛を軽減できます。

可能な場合は、foreachを使用してください。

for (int value : myArray) {

このようにして、インデックスについてまったく考える必要がなくなります。

ループするときは、何をするにしても、ループイテレータの値を変更しないでください(ここでは:) i。これが値を変更する必要がある唯一の場所は、ループを継続することです。それ以外の方法で変更すると、例外が発生するリスクがあり、ほとんどの場合、必要ありません。

検索/更新

配列の任意の要素を取得するときは、それが配列の長さに対する有効なインデックスであることを常に確認してください。

public Integer getArrayElement(final int index) {
    if (index < 0 || index >= myArray.length) {
        return null; //although I would much prefer an actual exception being thrown when this happens.
    }
    return myArray[index];
}
7
Madhusudan chowdary 2017-06-21 18:57.

コードでは、インデックス0から文字列配列の長さまでの要素にアクセスしました。name.length文字列オブジェクトの配列内の文字列オブジェクトの数、つまり3を示しますがname[2]、配列にはインデックス0からオブジェクトの数name.length - 1を取得する場所までアクセスできるため、アクセスできるのはインデックス2までname.lengthです。

forループを使用しているときでも、インデックス0で開始しているため、で終了する必要がありますname.length - 1。配列a [n]では、フォームa [0]からa [n-1]にアクセスできます。

例えば:

String[] a={"str1", "str2", "str3" ..., "strn"};

for(int i=0; i<a.length(); i++)
    System.out.println(a[i]);

あなたの場合:

String[] name = {"tom", "dick", "harry"};

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n');
}
6
nIKHIL 2018-01-17 02:13.

指定された配列の場合、配列の長さは3です(つまり、name.length = 3)。ただし、インデックス0から始まる要素を格納するため、最大インデックスは2になります。

したがって、「ArrayIndexOutOfBoundsException」を回避するには、「i ** <= name.length」の代わりに「i <** name.length」と記述する必要があります

4
Satyendra Kumar 2017-10-25 21:38.

この簡単な質問についてはこれだけですが、Javaの新機能を強調したかったので、初心者でも配列のインデックス作成に関する混乱をすべて回避できます。Java-8は、反復のタスクを抽象化しました。

int[] array = new int[5];

//If you need just the items
Arrays.stream(array).forEach(item -> { println(item); });

//If you need the index as well
IntStream.range(0, array.length).forEach(index -> { println(array[index]); })

メリットは何ですか?ええと、一つは英語のような読みやすさです。第二に、あなたは心配する必要はありませんArrayIndexOutOfBoundsException

3
roottraveller 2017-03-06 23:00.

あなたは一部のArrayIndexOutOfBoundsExceptionために取得していi<=name.lengthます。name.length文字列の長さname(3)を返します。したがって、にアクセスしようとするとname[3]、それは違法であり、例外をスローします。

解決されたコード:

String[] name = {"tom", "dick", "harry"};
for(int i = 0; i < name.length; i++) { //use < insteadof <=
  System.out.print(name[i] +'\n');
}

これは、Java言語仕様で定義されています。

public finalフィールドlengthアレイの構成要素の数を含みます。length正またはゼロの場合があります。

3
Johny 2017-03-09 02:56.

これが、Eclipseでスローされたときにこのタイプの例外がどのように見えるかです。赤字の数字は、アクセスしようとしたインデックスを示しています。したがって、コードは次のようになります。

myArray[5]

その配列に存在しないインデックスにアクセスしようとすると、エラーがスローされます。配列の長さが3の場合

int[] intArray = new int[3];

その場合、有効なインデックスは次のとおりです。

intArray[0]
intArray[1]
intArray[2]

配列の長さが1の場合

int[] intArray = new int[1];

その場合、有効なインデックスは次のとおりです。

intArray[0]

配列の長さに等しいか、それより大きい整数は範囲外です。

0未満の整数:範囲外です。

PS:配列をよりよく理解し、いくつかの実践的な演習を行う場合は、ここにビデオがあります:Javaの配列に関するチュートリアル

3
Bill the Lizard 2018-06-13 09:41.

多次元配列の場合length、正しい次元のプロパティにアクセスすることを確認するのは難しい場合があります。たとえば、次のコードを考えてみましょう。

int [][][] a  = new int [2][3][4];

for(int i = 0; i < a.length; i++){
    for(int j = 0; j < a[i].length; j++){
        for(int k = 0; k < a[j].length; k++){
            System.out.print(a[i][j][k]);
        }
        System.out.println();
    }
    System.out.println();
}

各次元の長さは異なるため、微妙なバグは、中央のループと内側のループlengthが同じ次元のプロパティを使用することa[i].lengthです(と同じであるためa[j].length)。

代わりに、内側のループでa[i][j].length(またはa[0][0].length、簡単にするために)を使用する必要があります。

2
Kyri Sarantakos 2011-04-06 06:06.

一見不思議なArrayIndexOutOfBoundsExceptionsで私が見た最も一般的なケース、つまり、明らかに独自の配列処理コードが原因ではないのは、SimpleDateFormatの同時使用です。特にサーブレットまたはコントローラの場合:

public class MyController {
  SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");

  public void handleRequest(ServletRequest req, ServletResponse res) {
    Date date = dateFormat.parse(req.getParameter("date"));
  }
}

2つのスレッドがSimplateDateFormat.parse()メソッドに一緒に入ると、ArrayIndexOutOfBoundsExceptionが発生する可能性があります。SimpleDateFormatのクラスjavadocの同期セクションに注意してください。

サーブレットやコントローラーのように、SimpleDateFormatのようなスレッドセーフでないクラスに同時にアクセスする場所がコード内にないことを確認してください。サーブレットとコントローラのすべてのインスタンス変数をチェックして、疑わしい可能性がないか確認します。

2
sgrpwr 2018-09-16 00:29.

ArrayIndexOutOfBoundsExceptionこの例外が発生するたびに、範囲外の配列のインデックスを使用しようとしていること、または一般の用語で、初期化した以上に要求していることを意味します。

これを防ぐには、配列に存在しないインデックスを要求していないことを常に確認してください。つまり、配列の長さが10の場合、インデックスの範囲は0〜9である必要があります。

2
Noname 2018-12-14 14:08.

ArrayIndexOutOfBoundsは、割り当てられていない配列内の位置にインデックスを付けようとしていることを意味します。

この場合:

String[] name = { "tom", "dick", "harry" };
for (int i = 0; i <= name.length; i++) {
    System.out.println(name[i]);
}
  • 配列は3つのStringオブジェクトで定義されているため、name.lengthは3です。
  • 配列の内容にアクセスする場合、位置は0から始まります。3つの項目があるため、name [0] = "tom"、name [1] = "dick"、name [2] = "harryを意味します。
  • ループすると、iはname.length以下になる可能性があるため、使用できないname [3]にアクセスしようとしています。

これを回避するには...

  • forループでは、i <name.lengthを実行できます。これにより、name [3]へのループが防止され、代わりにname [2]で停止します。

    for(int i = 0; i<name.length; i++)

  • foreachループを使用する

    String[] name = { "tom", "dick", "harry" }; for(String n : name) { System.out.println(n); }

  • list.forEach(消費者アクション)を使用します(Java8が必要です)

    String[] name = { "tom", "dick", "harry" }; Arrays.asList(name).forEach(System.out::println);

  • 配列をストリームに変換する-これは、配列に対して追加の「操作」(フィルター、テキストの変換、マップへの変換など)を実行する場合に適したオプションです(Java8が必要です)。

    String[] name = { "tom", "dick", "harry" }; --- Arrays.asList(name).stream().forEach(System.out::println); --- Stream.of(name).forEach(System.out::println);

1
adn.911 2017-12-01 06:41.

ArrayIndexOutOfBoundsException存在しないか、この配列の範囲外にある配列のインデックスにアクセスしようとしていることを意味します。配列インデックスは0から始まり、長さ-1で終わります。

あなたの場合

for(int i = 0; i<=name.length; i++) {
    System.out.print(name[i] +'\n'); // i goes from 0 to length, Not correct
}

ArrayIndexOutOfBoundsException存在しないname.lengthインデックス付き要素にアクセスしようとすると発生します(配列インデックスは長さ-1で終了します)。<=を<に置き換えるだけで、この問題は解決します。

for(int i = 0; i < name.length; i++) {
    System.out.print(name[i] +'\n');  // i goes from 0 to length - 1, Correct
}
1
Mohit 2016-11-11 22:21.

長さnの配列の場合、配列の要素のインデックスは0からn-1になります。

プログラムが配列インデックスがn-1より大きい要素(またはメモリ)にアクセスしようとすると、JavaはArrayIndexOutOfBoundsExceptionをスローします。

プログラムで使用できる2つのソリューションがあります

  1. カウントの維持:

    for(int count = 0; count < array.length; count++) {
        System.out.println(array[count]);
    }
    

    または、次のような他のループステートメント

    int count = 0;
    while(count < array.length) {
        System.out.println(array[count]);
        count++;
    }
    
  2. for eachループを使用する方が良い方法です。この方法では、プログラマーは配列内の要素の数を気にする必要がありません。

    for(String str : array) {
        System.out.println(str);
    }
    
1
Abhishek Agarwal 2018-03-26 22:08.

あなたのコードによると:

String[] name = {"tom", "dick", "harry"};
for(int i = 0; i<=name.length; i++) {
  System.out.print(name[i] +'\n');
}

System.out.print(name.length);をチェックした場合

あなたは3を得るでしょう。

それはあなたの名前の長さが3であることを意味します

ループは0から3まで実行されており、「0から2」または「1から3」のいずれかで実行されている必要があります。

回答

String[] name = {"tom", "dick", "harry"};
for(int i = 0; i<name.length; i++) {
  System.out.print(name[i] +'\n');
}
1
ZiadM 2018-10-18 23:24.

配列内の各項目は要素と呼ばれ、各要素はその数値インデックスによってアクセスされます。前の図に示されているように、番号付けは0から始まります。したがって、たとえば9番目の要素はインデックス8でアクセスされます。

IndexOutOfBoundsExceptionは、ある種のインデックス(配列、文字列、ベクトルなど)が範囲外であることを示すためにスローされます。

任意の配列Xは、[0から(X.length-1)]までアクセスできます。

1
John Czukkermann 2018-11-14 08:08.

配列を操作する方法と、インデックスの範囲外の例外を回避する方法を説明するすべての回答がここに表示されます。私は個人的にアレイを絶対に避けています。私はCollectionsクラスを使用します。これにより、配列インデックスを完全に処理する必要があるという愚かなことをすべて回避できます。ループ構造は、記述、理解、および保守の両方が容易なコードをサポートするコレクションで美しく機能します。

1
Sachithra Dilshan 2019-04-12 16:43.

配列の長さを使用してforループの反復を制御する場合は、配列の最初の項目のインデックスが0であることを常に覚えておいてください。したがって、配列の最後の要素のインデックスは、配列の長さより1つ短くなります。

0
Madhusudan Sharma 2018-05-17 17:27.

ArrayIndexOutOfBoundsException 名前自体は、配列サイズの範囲外のインデックスの値にアクセスしようとすると、そのような種類の例外が発生することを説明しています。

あなたの場合、forループから等号を削除するだけです。

for(int i = 0; i<name.length; i++)

より良いオプションは、配列を反復することです。

for(String i : name )
      System.out.println(i);
0
GT_hash 2018-07-17 17:03.

このエラーは、実行ループの超過時間で発生します。次のような簡単な例を考えてみましょう。

class demo{
  public static void main(String a[]){

    int[] numberArray={4,8,2,3,89,5};

    int i;

    for(i=0;i<numberArray.length;i++){
        System.out.print(numberArray[i+1]+"  ");
    }
}

最初に、配列を「numberArray」として初期化しました。次に、いくつかの配列要素はforループを使用して出力されます。ループが「i」時間実行されている場合、(numberArray [i + 1]要素を出力します。(i値が1の場合、numberArray [i + 1]要素が出力されます。)。i =(numberArray。 length-2)、配列の最後の要素が出力されます。「i」の値が(numberArray.length-1)になると、出力の値がなくなります。その時点で、「ArrayIndexOutOfBoundsException」が発生します。 idea.thank you!

0
Andrey Lavrukhin 2019-09-18 02:16.

あなたは回避するために、機能的なスタイルでオプションを使用することができますNullPointerExceptionし、ArrayIndexOutOfBoundsException

String[] array = new String[]{"aaa", null, "ccc"};
for (int i = 0; i < 4; i++) {
    String result = Optional.ofNullable(array.length > i ? array[i] : null)
            .map(x -> x.toUpperCase()) //some operation here
            .orElse("NO_DATA");
    System.out.println(result);
}

出力:

AAA
NO_DATA
CCC
NO_DATA

Related questions

MORE COOL STUFF

「水曜日」シーズン1の中心には大きなミステリーがあります

「水曜日」シーズン1の中心には大きなミステリーがあります

Netflixの「水曜日」は、典型的な10代のドラマ以上のものであり、実際、シーズン1にはその中心に大きなミステリーがあります.

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ケイト・ミドルトンは、州の夕食会と州の訪問中にカミラ・パーカー・ボウルズからスポットライトを奪いたくなかった、と専門家は言う.

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンが、オリビア・ワイルドが彼女とハリー・スタイルズとの間の「難しい」が「非常に友好的」な分割を恒久的にすることを望んでいる理由を見つけてください.

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする 

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする&nbsp;

エリザベス女王の死後、ケイト・ミドルトンが舞台裏で「非常に困難な時期」を過ごしていたと伝えられている理由を調べてください.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

Total War:Warhammer:Kotakuレビュー

Total War:Warhammer:Kotakuレビュー

私はこのゲームを嫌う準備ができていました。先週の前に、Total War:Warhammerについての私の考えがありました:それでもここに私は、私の手にある完成品であり、私は変わった男です。

涙の道:軍事化された帝国主義勢力がスタンディングロックキャンプを占領

涙の道:軍事化された帝国主義勢力がスタンディングロックキャンプを占領

スタンディングロックスー族のメンバーと水の保護者は、ノースダコタ州のスタンディングロックにあるオセティサコウィンキャンプを去ります。(Twitter経由のCNNスクリーンショット)火と煙がスカイラインを覆い、スタンディングロックスー族のメンバーと水の保護者が、聖なるものを守りながら建てた家、オセティサコウィン(セブンカウンシルファイアーズ)キャンプから行進し、太鼓を打ち、歌い、祈りました。ダコタアクセスパイプラインとしても知られる「ブラックスネーク」からの土地。

シアーズとKマートはイヴァンカ・トランプの商品を自分たちで取り除いています

シアーズとKマートはイヴァンカ・トランプの商品を自分たちで取り除いています

写真:APシアーズとKマートは、イヴァンカ・トランプのトランプホームアイテムのコレクションも、誰も購入したくないために削除しました。シアーズとKマートの両方の親会社であるシアーズホールディングスは、土曜日のABCニュースへの声明で、彼らが気にかけていると辛抱強く説明しましたトランプラインを売り続けるにはお金を稼ぐことについてあまりにも多く。

ポテトチップスでたった10分でスペインのトルティーヤを作る

ポテトチップスでたった10分でスペインのトルティーヤを作る

伝統的なスペインのトルティーヤは通常、オリーブオイルで柔らかくなるまで調理されたポテトから始まります(30分以上かかる場合があります)が、ケトルで調理されたポテトチップスの助けを借りてわずか10分でテーブルに置くことができます。上のビデオはすべてがバラバラにならないように裏返す方法を含め、レシピ全体を説明しますが、必要なのは4〜5個の卵と3カップのケトルチップスだけです。

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、子供向けのパズルの本の序文を書き、ジョージ王子、シャーロット王女、ルイ王子と一緒にテキストを読むと述べた.

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

Yak's Produce は、数十個のつぶれたメロンを野生動物のリハビリ専門家であるレスリー グリーンと彼女のルイジアナ州の救助施設で暮らす 42 匹の動物に寄付しました。

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

8 枚目のスタジオ アルバムのリリースに向けて準備を進めているデミ ロヴァートは、「スーパー グレート ガイ」と付き合っている、と情報筋は PEOPLE に確認しています。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

ホームオフィスのセットアップ術を極めよう!AppExert の開発者は、家族全員が一緒にいる場合でも、在宅勤務の技術を習得しています。祖父や曽祖父が共同家族で暮らしていた頃の記憶がよみがえりました。

2022 年、私たちのデジタル ライフはどこで終わり、「リアル ライフ」はどこから始まるのでしょうか?

20 年前のタイムトラベラーでさえ、日常生活におけるデジタルおよびインターネットベースのサービスの重要性に驚くことでしょう。MySpace、eBay、Napster などのプラットフォームは、高速化に焦点を合わせた世界がどのようなものになるかを示してくれました。

ニューロマーケティングの秘密科学

ニューロマーケティングの秘密科学

マーケティング担当者が人間の欲望を操作するために使用する、最先端の (気味が悪いと言う人もいます) メソッドを探ります。カートをいっぱいにして 3 桁の領収書を持って店を出る前に、ほんの数点の商品を買いに行ったことはありませんか? あなたは一人じゃない。

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

私たちが住んでいる世界を確実に理解するには、データが必要です。ただし、空間参照がない場合、このデータは地理的コンテキストがないと役に立たなくなる可能性があります。

Language