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

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

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

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

Q&A

解決済

2回答

19801閲覧

リソースが閉じられません scannerの閉じ方がわかりません

tkokushi

総合スコア5

Java

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

0グッド

0クリップ

投稿2017/04/23 10:12

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

リソースが閉じられません
scannerの閉じ方がわかりません

###該当のソースコード

書いたコード
package janken;
import java.util.InputMismatchException;
import java.util.Scanner;

public class JankenTakahashi {// メインクラス
public static void main(String args[]) throws InputMismatchException {
int loseCount = 0;
int player = 0;// プレイヤーの手
while (3 > loseCount) {
System.out.println("ワイとじゃんけんやで...あなたの手を入力してください ⇒( グー:0 チョキ:1 パー:2 )");
System.out.println("コンピュータに3回/負けたらllゲーム終了です");
try {
player = newjava.util.Scanner(System.in).nextInt(3);// 入力の手
while (true) {
if (player == 0) {
System.out.println("あなたの手はグーです");
break;
} else if (player == 1) {
System.out.println("あなたの手はチョキです");
break;
} else if (player == 2) {
System.out.println("あなたの手はパーです。");
break;
} else {
System.out.println("0. 1 . 2 以外は入力しないでください");
}
break;
}
} catch (InputMismatchException e) {
System.out.println("おい! 0.1.2や ");
}finally{

player.close();

}
Computer computer = new Computer();
int c = computer.getcomputer();
Winlose.winlose(c, player);
}
}
}
class Winlose {// 勝ち負けを判定するクラスprivate static int winCount = 0;// プレイヤーの勝った
private static int loseCount = 0; // プレイヤーの負けた数
private static int winCount = 0;// プレイヤーの勝った]
// private static int playerA = 0;// プレイヤーの手
public static void winlose(int computerA, int playerA) {
switch (computerA) {
// コンピュータの手がグーの場合
case 0:
// 自分の手とコンピューターの手が同じ場合
if (0 == playerA) {
System.out.println("あいこ");
// 自分の手とコンピューターの手が同じではない場合
} else if (1 == playerA) {
// 自分の手が負けた場合
System.out.println("あなたのまけ");
loseCount++;
} else if (2 == playerA) {
System.out.println("あなたの勝ち");
winCount++;
}
break;
// コンピュータの手がチョキ
case 1:
if (1 == playerA) {
System.out.println("あいこ");
} else if (0 == playerA) {
System.out.println("あなたの勝ち");
winCount++;
} else if (2 == playerA) {
System.out.println("あなたの負け");
loseCount++;
}
break;
// コンピュータの手がパー
case 2:
if (2 == playerA) {
System.out.println("あいこ");
} else if (0 == playerA) {
System.out.println("あなたの負け");
loseCount++;
} else if (1 == playerA) {
System.out.println("あなたの勝ち1");
winCount++;
}
break;
}
if (loseCount < 3) {
System.out.println("勝った" + winCount + "回数");
System.out.println("負けた" + loseCount + "回数");
} else {
System.out.println("3回負けたので終わり");
System.exit(0);
}
}
}
class Computer {// コンピュータの手を決めるクラス
public int getcomputer() {
int computer; // コンピューターの手
computer = new java.util.Random().nextInt(3);
int gu = 0; // グー
int choki = 1; // チョキ
int pa = 2; // パー
if (computer == gu) {
System.out.println("コンピューターはグーを出した");
} else if (computer == choki) {
System.out.println("コンピュータはチョキを出した");
} else if (computer == pa) {
System.out.println("コンピュータはパーを出した");
}
return computer;
}
}

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

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

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

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

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

guest

回答2

0

ベストアンサー

int player = 0;// プレイヤーの手
と定義してあるように、playerは数字であってscannerではないのでplayer.close()はコンパイルエラーとなりますので、

java

1Scanner scanner = new Scanner(System.in); 2player = scanner.nextInt(3);// 入力の手

と分けて書いてやり、scanner.close()としてやれば閉じることができます。

投稿2017/04/23 10:28

TakeoAsai

総合スコア880

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

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

tkokushi

2017/05/07 06:18

回答ありがとうございます。 エラーは解決できました。
guest

0

playerはintの変数だからですね。

投稿2017/04/23 10:17

koko_u

総合スコア936

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

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

tkokushi

2017/04/23 10:29

回答ありがとうございます。 この場合はどうすれば良いでしょうか? 初心者すぎてすいません。 宜しくお願いします。
koko_u

2017/04/23 12:12

TakeoAsai さんも指摘しているように、player.close() でコンパイルエラーになっていますよね?まずはその現実に対処するのです。 なぜ int 型の player に対して close() を呼び出そうとしたのですか?きっとどこかから参考になりそうなソースコードを流用したのではないですか?その参考としたコードと自分が今書いているコードをよく比べて、よく内容を理解することがするべき事です。
tkokushi

2017/05/07 06:22

ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問