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

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

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

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

Q&A

解決済

3回答

2753閲覧

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

yamagatamasa

総合スコア7

Java

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

0グッド

0クリップ

投稿2016/12/01 13:33

最近、独学で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つの部分でエラーが発生しております。
試行錯誤を重ねていますがエラーが消えてくれません。

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

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

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

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

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

carimatics

2016/12/01 13:54

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

回答3

0

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

投稿2016/12/01 14:07

yona

総合スコア18155

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

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

yamagatamasa

2016/12/02 01:07

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

0

ベストアンサー

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

java

1import java.util.ArrayList; 2import java.util.List; 3import java.util.Scanner; 4import java.util.Collections; 5 6public class KY { 7 public static void main(String[] args) { 8 9 // じゃんけんの定数定義 10 int m = 0; 11 int t = 0; 12 13 List<String> player = new ArrayList<>(); 14 player.add("グー"); 15 player.add("チョキ"); 16 player.add("パー"); 17 18 // 入力画面 19 System.out.println("グー ,チョキ ,パーのいずれかを入力してください"); 20 21 Scanner scan = new Scanner(System.in); 22 String str = scan.next(); 23 if (str.equals(player.get(0))) { 24 System.out.println("あなたがだしたのは" + player.get(0) + "です"); 25 } else if (str.equals(player.get(1))) { 26 m = 1; 27 System.out.println("あなたがだしたのは" + player.get(1) + "です"); 28 } else if (str.equals(player.get(2))) { 29 m = 2; 30 System.out.println("あなたがだしたのは" + player.get(2) + "です"); 31 } else { 32 System.out.println("入力された値が不正です"); 33 34 } 35 36 List<String> enemy = new ArrayList<>(); 37 enemy.add("グー"); 38 enemy.add("チョキ"); 39 enemy.add("パー"); 40 Collections.shuffle(enemy); 41 System.out.println("相手がだしたのは" + enemy.get(0) + "です");// 繰り返し表示 42 43 if (enemy.get(0).equals(player.get(0))) { 44 } 45 if (enemy.get(0).equals(player.get(1))) { 46 t = 1; 47 } 48 if (enemy.get(0).equals(player.get(2))) { 49 t = 2; 50 } 51 52 // じゃんけんの結果 53 54 if (m == t) { 55 System.out.println("引き分けです"); 56 } 57 if ((m == 0 && t == 1) || (m == 1 && t == 2) || (m == 2 && t == 0)) { 58 System.out.println("あなたの勝ちです"); 59 } 60 if ((m == 1 && t == 0) || (m == 2 && t == 1) || (m == 0 && t == 2)) { 61 System.out.println("あなたの負けです"); 62 } 63 64 } 65}

投稿2016/12/01 15:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yamagatamasa

2016/12/02 01:22

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

0

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

import java.util.Collections;

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

if (条件) { // 処理 }

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

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

投稿2016/12/01 14:05

編集2016/12/02 01:02
carimatics

総合スコア740

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

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

yamagatamasa

2016/12/02 00:59

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

2016/12/02 01:13

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

2016/12/02 01:28

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問