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

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

ただいまの
回答率

90.46%

  • Java

    16235questions

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

Javaのプログラミングで詰まっています

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 979

yamagatamasa

score 1

最近、独学でJavaの学習を始めた新参者です。
エクリプスを利用して自分でプログラムを書いているのですが
エラーの出てる箇所の修正方法がわからず詰まっている状態です。
よろしければ、アドバイスのほどよろしくお願いします。

ソースコード
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Janken {
public static void main(String[] args){

//じゃんけんの定数定義

List<String>player = new ArrayList<>();  
player.add("グー");
player.add("チョキ");
player.add("パー");

//入力画面
System.out.println("グー ,チョキ ,パーのいずれかを入力してください");

Scanner scan = new Scanner(System.in);
String str = scan.next();
if (str.equals(player.get(0))) {
System.out.println("あなたがだしたのは" + player.get(0) + "です");
}     if (str.equals(player.get(1))) {
System.out.println("あなたがだしたのは" + player.get(1) + "です");
}      if (str.equals(player.get(2))) {
System.out.println("あなたがだしたのは" + player.get(2) + "です");
}
else { System.out.println("入力された値が不正です");
return;
}

List<String>enemy = new ArrayList<>();  
enemy.add("グー");
enemy.add("チョキ");
enemy.add("パー");
Collections.shuffle(enemy);
System.out.println("相手がだしたのは" +  enemy.get(0) + "です");//繰り返し表示

//じゃんけんの結果
if((player.get(0)) && (enemy.get(1)) || (player.get(1)) && (enemy.get(2)) ||
(player.get(2)) && (enemy.get(0))) {
System.out.println("あなたの勝ちです");
} else if( enemy.get(0) == player.get(0) ||  enemy.get(1) == player.get(1) || 
enemy.get(2) == player.get(2)){
System.out.println("引き分けです");
} else {
System.out.println("あなたの負けです");
}

}
}
.
.
.
エラーの出る部分
Collections.shuffle(enemy);

if((player.get(0)) && (enemy.get(1)) || (player.get(1)) && (enemy.get(2)) ||
(player.get(2)) && (enemy.get(0))) {
System.out.println("あなたの勝ちです");

上記の2つの部分でエラーが発生しております。
試行錯誤を重ねていますがエラーが消えてくれません。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • carimatics

    2016/12/01 22:54

    コード部分にはコードブロックを利用してください。コードが確認しやすくなります。詳しくはteratailのヘルプを参照してください。また、エラーが出た場合はエラーメッセージも貼るようにしてください。

    キャンセル

回答 3

+3

player.getはString型ですよね?
if文は評価した結果がboolean型になる必要があります。
このif文は何がしたいんでしょう、説明してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/02 10:07

    yonaさん、ご回答ありがとうございます。
    String型の比較が目的だったのですが、私が説明足らずなのとif文に対しての理解が不足していたみたいです。
    次回、質問させてもらうときはプログラムへの理解を深めつつ、何をしたいか明確に説明できる文章で投稿するように努力します。

    キャンセル

checkベストアンサー

+1

//じゃんけんの結果 
より下で何がしたいのかというと 恐らくは 例えば
(player.get(0)) && (enemy.get(1))
の部分だと、本当は
str.equals(player.get(0)) && enemy.get(0).equals(player.get(1))
と書きたかったのだと思います
それが端折られて(間違って)いるため目的の結果が出ない状態になっています。
とりあえず修正して完成させたので以下のコードが参考になるのではないかと思います

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Collections;

public class KY {
    public static void main(String[] args) {

        // じゃんけんの定数定義
        int m = 0;
        int t = 0;

        List<String> player = new ArrayList<>();
        player.add("グー");
        player.add("チョキ");
        player.add("パー");

        // 入力画面
        System.out.println("グー ,チョキ ,パーのいずれかを入力してください");

        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        if (str.equals(player.get(0))) {
            System.out.println("あなたがだしたのは" + player.get(0) + "です");
        } else if (str.equals(player.get(1))) {
            m = 1;
            System.out.println("あなたがだしたのは" + player.get(1) + "です");
        } else if (str.equals(player.get(2))) {
            m = 2;
            System.out.println("あなたがだしたのは" + player.get(2) + "です");
        } else {
            System.out.println("入力された値が不正です");

        }

        List<String> enemy = new ArrayList<>();
        enemy.add("グー");
        enemy.add("チョキ");
        enemy.add("パー");
        Collections.shuffle(enemy);
        System.out.println("相手がだしたのは" + enemy.get(0) + "です");// 繰り返し表示

        if (enemy.get(0).equals(player.get(0))) {
        }
        if (enemy.get(0).equals(player.get(1))) {
            t = 1;
        }
        if (enemy.get(0).equals(player.get(2))) {
            t = 2;
        }

        // じゃんけんの結果

        if (m == t) {
            System.out.println("引き分けです");
        }
        if ((m == 0 && t == 1) || (m == 1 && t == 2) || (m == 2 && t == 0)) {
            System.out.println("あなたの勝ちです");
        }
        if ((m == 1 && t == 0) || (m == 2 && t == 1) || (m == 0 && t == 2)) {
            System.out.println("あなたの負けです");
        }

    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/02 10:22

    tetratailさん、説明足らずな質問の意図を汲み取って、修正コードまでつけて回答していただいて本当にありがとうございます!
    おかげさまで無事コンパイルできました。
    次回質問させていただくときは明確で詳細な文章を心掛けさせていただきます。
    もし機会があればよろしくお願い致します。

    キャンセル

+1

ひとつ目はCollectionsクラスがインポートされていないのが原因です。
インポート文として以下を追加してください。

import java.util.Collections;

2つ目は括弧の対応が取れていないのが原因です。
if文の書式は基本的には以下のようになります。

if (条件) {
    // 処理
}

論理和や論理積で複数の条件を絡めたチェックをする場合も、ifキーワード直後の括弧内に条件が全て含まれるようにしてください。

if (条件1 && 条件2 || 条件3) {
    // 処理
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/02 09:59

    Collectionsクラスのインポートは全く気づきませんでした...
    if文に関しては全く理解が足りてなかったみたいです...
    皆さんの回答を参考にさせていただき、無事にコンパイルできました!
    Carimaticsさん、素早くご回答していただきまして有難うございます!

    キャンセル

  • 2016/12/02 10:13

    追記でお礼申し上げます。
    投稿が初めてのものでコードブロックなどの機能をよく理解しておりませんでした。
    次回質問させていただくときは機能を利用してわかりやすいものを投稿させていただきます。
    ご親切にアドバイスをしていただきまして有難うございます。

    キャンセル

  • 2016/12/02 10:28

    回答が参考になったのなら幸いです。

    解決済みの質問も他の方が参考にする可能性があります。
    次回からと言わず今回の質問も読みやすく整形していただけると親切かと思います。
    ご検討ください。

    キャンセル

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

  • ただいまの回答率 90.46%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    16235questions

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