質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Q&A

解決済

3回答

1276閲覧

このコードは、何をしているか教えてください

Kohinata

総合スコア30

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

0グッド

0クリップ

投稿2023/03/26 15:13

編集2023/03/27 00:57

実現したいこと

コードを理解したい

前提

Javaでアカウント登録画面を作成していて、参考にしていた資料に、書いてあったコードです。
コピペして実装したところうまくいったのでいいのですが、今後のために意味を理解したいと思い質問に至りました。

該当のソースコード

JSP

1<% 2UserDomain result = null; 3if (results == null == false) { 4 result = results.get(0); 5} 6%>

試したこと

該当コードで検索をかけましたがヒットしませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2023/03/26 16:27

result = result.get(0); は result = results.get(0); の間違いでは?
jimbe

2023/03/26 17:04 編集

java と JSP は一応違うモノです。
xebme

2023/03/26 21:20

その前にこのようなコードが記述されていませんか List<UserDomain> results = ... ;
xebme

2023/03/26 22:10

あるいは、次の宣言かもしれません <jsp:useBean id="results" type="java.util.List<... UserDomain>" class="java.util.ArrayList<... UserDomain> ... ></jsp:useBean>
Kohinata

2023/03/26 23:06

List<UserDomain> results = ... ; 上記書いてありました!
xebme

2023/03/26 23:48 編集

それでは、hoshi-takanoriさんのご指摘のとおり、コードが間違ってると思います 追記 これで回答材料は全て揃いました。
m.ts10806

2023/03/27 00:06 編集

1行もわからないのか、わかっていることがあるのかで全く違います。 1行もわからないのであれば説明されても半分も理解できない可能性があり、回答者の徒労になります。 いずれにしても「全部」はもはや質問と回答の域に収まりません。 あと、コードが一部過ぎると、その場だけの機能は答えられても「流れの中でどういう役割をしているか」までは答えられませんし、点だけで見てると流れを見失います。
guest

回答3

0

== は左結合です。
results == null == false(results == null) == false と解釈されます。

投稿2023/03/26 17:08

jimbe

総合スコア12919

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

最初に言っておきますが、私はJavaを触った事が無いので正確では無いかもしれません。もし間違い等あればご指摘頂けると嬉しいです

ifの条件について考えます
results == null == false.

==は左結合ですので、
(results == null) == false.

result == nullがtrueのときfalse, falseのときtrueを返しますので、
!(results == null).

省略して、
results != null.

if内について、result = result.get(0)となっていますが、明らかにおかしいので、result = results.get(0)だとします。

このコードはresultnullで初期化して、resultsが空では無ければresultsの最初の要素をresultにコピーするということでしょう。
resultsが空のパターンだけ排除して代入しているわけです

投稿2023/03/26 23:41

編集2023/03/27 00:44
iFQ7Vj

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2023/03/27 00:12

> 省略して、 results. 最後2つが分かりやすいと思います。 resultsの中身が空では無ければという意味ですね 言語間違えてません? > もっと言うと、resultsの最初の要素にアクセク出来ないresults=nullのパターンだけ排除して代入しているわけです 最初の要素? 憶測で答えるのではなく、調べて答えましょう。
Zuishin

2023/03/27 00:47

調べるのではなく曖昧な表現にすることを選ぶという。そんなに時間がかかることでもないから調べればいいのに。
iFQ7Vj

2023/03/27 00:56

>言語間違えてません? if (results)にするとresultsがnullのとき、NullPointerException例外がスローされるようですので、resultの行を削除しました。 >最初の要素? list.get(0)はlistの0番目の要素のgetterですので正しいと思います
Kohinata

2023/03/27 01:08

コードに誤りがあったのにも関わらず、ご回答いただきありがとうございます!
Zuishin

2023/03/27 01:17 編集

> list.get(0)はlistの0番目の要素のgetterですので正しいと思います 0 番目の要素があるかではなく、インスタンスがあるかを調べています。 インスタンスがあっても 0 番目の要素がないことはあるため、それでは調べられません。
iFQ7Vj

2023/03/27 01:34 編集

resultsの最初の要素にアクセスするとエラーが出てしまうため、それを避けるためにnullのパターンを排除、といった意図です。 分かりにくい表現をしてしまい申し訳ありません。
Zuishin

2023/03/27 06:44

基本的なところから通じないようなのでもういいです。 今度から調べてから回答するのがいいと思います。
iFQ7Vj

2023/03/27 11:09

要素にアクセスして判定するといった意味では無く、アクセスする前にインスタンスの存在を確認するという意図です
guest

0

試しに全部消しても正しく動くか確認してみると良いと思います。

投稿2023/03/26 15:21

ykws

総合スコア1236

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問