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

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

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

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

Q&A

解決済

1回答

1041閲覧

javaの例外処理について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2020/06/03 14:46

編集2020/06/03 16:43

前提・実現したいこと

実行はできるが実行するごとに結果表示の順番が変わる。

村田と岡田と鈴木と山田のprintScoreは正常に実行させ、佐藤だけMAX_SCOREを超えているためそれの例外処理をするというプログラムを書きたい。
このコードを実行すると上の四人は正しく表示され佐藤だけif文の条件に当てはまり”scoreの値が変です”と実行結果の欄に表示されるのですがその言葉の場所が1行目の時もあれば3行目の時もあるなど場所が定まらないのでその理由はなぜなのか教えていただきたいです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

public class Student { String name; int score; String grade; static final int MAX_SCORE=100; void printScore() { try { if(score<0||MAX_SCORE<score) { throw new IllegalArgumentException("scoreの値が変です"); } System.out.println(name+"さんは"+MAX_SCORE+"点満点中、" + score+"点です"); }catch(IllegalArgumentException e) { System.err.println(e.getMessage()); } } } public class StudentSample { public static void main(String[] args) { Student murata=new Student(); murata.name="村田"; murata.score=80; murata.printScore(); Student okada=new Student(); okada.name="岡田"; okada.score=90; okada.printScore(); Student suzuki=new Student(); suzuki.name="鈴木"; suzuki.score=70; suzuki.printScore(); Student yamada=new Student(); yamada.name="山田"; yamada.score=60; yamada.printScore(); Student sato=new Student(); sato.name="佐藤"; sato.score=190; sato.printScore(); } }

試したこと

数回実行した。

補足情報(FW/ツールのバージョンなど)

実行はできるが毎回実行結果が表示される順番が変わってしまう理由が知りたい。
自分ではコードのprintScoreが実行される順番、つまり
murata
okada
suzuki
yamada
sato
の順番に実行結果が表示されると思ったのですがsatoの結果が1番下では無くmurataとokadaの間に出たら1番上に出たりとランダムで結果が出てきてしまいます。

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

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

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

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

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

KoichiSugiyama

2020/06/03 15:21

どういう順番を想定していたのか、と、意図しない結果の例を挙げてもらうと、回答がつきやすいのではないかと思います。
退会済みユーザー

退会済みユーザー

2020/06/03 15:37

補足させていただきました。
swordone

2020/06/03 15:46

そもそもこのコードでsatoの結果が表示されるはずがありません。
退会済みユーザー

退会済みユーザー

2020/06/03 16:41

そもそもこのカードが村田と岡田と鈴木と山田のprintScoreは正常に実行させ、佐藤だけMAX_SCOREを超えているからそれの例外処理をするというプログラムを書くつもりだったのですがそこの部分の説明を書いていませんでした。すみません。 このコードを実行すると上の四人は正しく表示され佐藤だけif版の条件に当てはまり”scoreの値が変です”と実行結果の欄に表示されるのですがその言葉の場所が1行目の時もあれば3行目の時もあるなど場所が定まらないのでその理由はなぜなのかという質問でした。言葉足らずですみません。
guest

回答1

0

ベストアンサー

※ すいません、他の記事へのリンクの書き方が
すぐに分からないので
そのまま貼り付けさせていただきます。

参考:
https://teratail.com/questions/20046
─────────────────────────
Eclipseのコンソールは、標準出力(System.out)と標準エラー出力(System.err)の
メッセージが非同期に出力されるため、順番が前後することがあります。
─────────────────────────
System.out
System.err
の出力が非同期に出力されている為、順番が毎回変わるのではないでしょうか?

試しにSystem.errにしている箇所も
System.outにしたら、
想定している結果になりませんでしょうか?

投稿2020/06/03 16:52

massive003

総合スコア70

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

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

退会済みユーザー

退会済みユーザー

2020/06/03 17:02

System.outに変えたら自分の思っていた順番と同じになりました。ありがとうございます。次回からはもう少し自分で調べてから質問するように心がけます。一つ質問なのですが、コードを見ただけでeclipsを使っているということがわかるものなのでしょうか。
KoichiSugiyama

2020/06/03 23:27 編集

検索ワード「println 順番」でgoogle検索すると上記の記事もヒットしますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問