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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

419閲覧

メソッドの呼び出し方法

hinata0812

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/01/29 02:28

Javaを学習して者です。
基本情報技術試験の過去問題をみていたのですが、
下記コード①から②に移り変わるタイミングがあまりわかっておらず、①が終了した後にToDoListのインスタンスのaddの部分に戻り、
ToDoList のaddを呼び出ししている認識でいるのですが、あっていますでしょうか?

public class ToDoListTester { public static void main(String[] args) { ToDoList list =new ToDoList(); list.add(new ToDo("メール送信","201604181500",ToDo.Priority.HIGH)); list.add(new ToDo("ホテル予約","20160420",ToDo.Priority.LOW)); list.add(new ToDo("チケット購入","20160430",ToDo.Priority.MIDDLE)); list.add(new ToDo("報告書作成","20160428",ToDo.Priority.HIGH)); list.add(new ToDo("会議室予約","201605301200",ToDo.Priority.HIGH)); list.update(new ToDo("PC購入","20160531",ToDo.Priority.HIGH)); for(ToDo todo : list.select()) { todo.setState(ToDo.State.STARTED); list.update(todo); } Condition condition1=new Condition() { public boolean test(ToDo todo) { return todo.getDeadline().compareTo("20160501")<0; } }; Condition condition2=new Condition() { public boolean test(ToDo todo) { return todo.getPriority().equals(ToDo.Priority.HIGH); } }; for(ToDo todo : list.select(condition1,condition2)) { System.out.println(todo); } } }
import java.util.UUID; public class ToDo { public enum Priority{LOW,MIDDLE,HIGH} public enum State {NOT_YET_STARTED,STARTED,DONE} private static final String DEADLINE_PATTERN="\\d{8}|\\d{12}"; private final String id; private String subject; private String deadline; private Priority priority; private State state; private ToDo(String subject,String deadline,Priority priority, String id,State state) { if(!deadline.matches(DEADLINE_PATTERN)) { throw new IllegalArgumentException(); } this .subject=subject; this.deadline=deadline; this.priority=priority; this.id = id; this.state =state;//①この処理の後にToDoListクラスの②へ } public ToDo(String subject,String deadline,Priority priority) { this(subject,deadline,priority, UUID.randomUUID().toString(),State.NOT_YET_STARTED); } public ToDo(ToDo todo) { this(todo.subject,todo.deadline,todo.priority,todo.id,todo.state); } public String getSubject() {return subject;} public String getDeadline() {return deadline;} public Priority getPriority() {return priority;} public State getState() {return state;} public void setState(State state) {this.state = state;} public int hashCode() {return id.hashCode();} public boolean equals(Object o) { return o instanceof ToDo && ((ToDo)o).id.equals(id); } public String toString() { return String.format("主題: %s, 期限: %s, 優先度: %s, 状態: %s",subject,deadline,priority,state); } }
import java.util.ArrayList; import java.util.List; public class ToDoList { private List<ToDo>todoList=new ArrayList<ToDo>(); public void add(ToDo todo) {//② if(!todoList.contains(todo)) { todoList.add(new ToDo(todo)); } } public void update(ToDo todo) { int index=todoList.indexOf(todo); if(index !=-1) { todoList.set(index, todo); } } public List<ToDo> select(Condition...conditions) { List<ToDo>result=new ArrayList<ToDo>(); for(ToDo todo:todoList) { boolean selected=true; for(Condition condition:conditions) { selected = condition.test(todo); if(!selected) break; } if(selected) { result.add(new ToDo(todo)); } } return result; } }

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

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

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

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

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

m.ts10806

2022/01/29 02:31

実際にコード書いてデバッグで動かせばわかると思うのですが、手元に環境ないですか?
m.ts10806

2022/01/29 02:32

質問タグ「Java」だけだと↑みたいな感じになります。 いずれにしてもJavaで受けるならある程度手元で組んだほうが良いとは思いますが。
jimbe

2022/01/29 03:52

①とか②だけではどこにあるか探すのに苦労します。 どのクラスのどのメソッドのどの辺りなのか程度は書いて頂けませんでしょうか。
guest

回答1

0

java

1list.add(new ToDo("メール送信","201604181500",ToDo.Priority.HIGH));

を実行した時の動きでしょうか。
まず ToDo オブジェクトを作るためにコンストラクタが動き、その後 add メソッドが動きます。
が、これを「add に戻る」と表現するのは若干違和感があります。
メソッドはパラメータを元に動きますので、先にカッコの中を解決しなければなりません。単に優先順位に従って実行しているだけと考えた方が楽ではないでしょうか。
行くとか戻るとかではなく、「ToDo オブジェクトを作り (= その為にコンストラクタが動き) list に追加 (=add メソッドの呼び出しを ) する」程度の読み方で良いように思います。

投稿2022/01/29 04:01

編集2022/01/29 04:14
jimbe

総合スコア12545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問