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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

0回答

954閲覧

java eclipse

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/12/28 07:40

java

1package sampul1; 2import sampul1.num.num; 3import sampul1.num.player.player; 4public class HitandBlow { 5 public static void main(String[] args) { 6 //ゲーム説明 7 System.out.println("このゲームは3桁の数字を当てるゲームです"); 8 System.out.println("正解するまでの回数が少なかった方が勝利です"); 9 System.out.println("数字と桁が両方合っていればHit,数字のみならばBlowと表示されます"); 10 num a=new num(); 11 player b=new player(); 12 a.sub(); 13 b.sub(); 14} 15} 16package sampul1.num; 17import java.util.Scanner; 18public class num { 19 public void sub(){ 20 //数字設定 player1 21 Scanner sc=new Scanner(System.in); 22 String name1="player1"; 23 System.out.println(name1+"さん3桁の数字を設定してください"); 24 while(true) { 25 boolean number=true; 26 String input=sc.nextLine(); 27 char []a=input.toCharArray(); 28 int il=input.length(); 29 for(int i=0; i<3; i++) { 30 for(int j=i+1; j<3; j++) { 31 if(a[i]==a[j]||il!=3) { 32 number=false; 33 } 34 } 35 } 36 if(number==false) { 37 System.out.println("数字は重複せず、3桁です"); 38 continue; 39 } 40 // 数字設定 player2 41 String name2="player2"; 42 System.out.println(name2+"さん3桁の数字を設定してください"); 43 while(true) { 44 boolean num=true; 45 String reinput=sc.nextLine(); 46 char[]b=reinput.toCharArray(); 47 int rl=reinput.length(); 48 for(int i=0; i<3; i++) { 49 for(int j=i+1; j<3; j++) { 50 if(b[i]==b[j]||rl!=3) { 51 num=false; 52 } 53 } 54 } 55 if(num==false) { 56 System.out.println("数字は重複せず、3桁です"); 57 continue; 58 } 59 } 60 } 61 } 62} 63package sampul1.num.player; 64import sampul1.num.num; 65public class player extends num{ 66 public void sub() { 67 //player1 68 System.out.println(name1+"さん相手の3桁を予想してください"); 69 int count=1; 70 while(true) { 71 boolean nu=true; 72 String c=sc.nextLine(); 73 char[] d=c.toCharArray(); 74 int cl=c.length(); 75 for(int i=0; i<3; i++) { 76 for(int j=i+1; j<3; j++) { 77 if(d[i]==d[j]||cl!=3) { 78 nu=false; 79 } 80 } 81 } 82 if(nu==false) { 83 System.out.println("数字は重複せず、3桁です"); 84 continue; 85 } 86 87 int hit=0, blow=0; 88 for(int i=0; i<3; i++) { 89 if(d[i]==b[i]) { 90 hit++; 91 }else{ 92 for(int j=0; j<3; j++) { 93 if(d[i]==b[j]) { 94 blow++; 95 } 96 } 97 } 98 } 99 if(hit!=3) { 100 System.out.println(hit+"Hit "+blow+"Blow"); 101 count++; 102 } 103 if(hit==3) { 104 System.out.println(name1+"さんは"+count+"回目で正解しました。"); 105 break; 106 } 107 } 108 //player2 109 System.out.println(name2+"さん相手の3桁の数字を予想してください"); 110 int recount=1; 111 while(true) { 112 boolean n=true; 113 String e=sc.nextLine(); 114 char[] f=e.toCharArray(); 115 int el=e.length(); 116 for(int i=0; i<3; i++) { 117 for(int j=i+1; j<3; j++) { 118 if(f[i]==f[j]||el!=3) { 119 n=false; 120 } 121 } 122 } 123 if(n==false) { 124 System.out.println("数字は重複せず、3桁です"); 125 continue; 126 } 127 int ahit=0, ablow=0; 128 for(int i=0; i<3; i++) { 129 if(f[i]==a[i]) { 130 ahit++; 131 }else{ 132 for(int j=0; j<3; j++) { 133 if(f[i]==a[j]) { 134 ablow++; 135 } 136 } 137 } 138 } 139 if(ahit!=3) { 140 System.out.println(ahit+"Hit "+ablow+"Blow"); 141 recount++; 142 } 143 if(ahit==3) { 144 System.out.println(name2+"さんは"+recount+"回目で正解しました。"); 145 if(count==recount) { 146 System.out.println("引き分けです"); 147 } 148 if(count<recount) { 149 System.out.println(name1+"さんの勝利です!"); 150 } 151 if(count>recount) { 152 System.out.println(name2+"さんの勝利です!"); 153 } 154 break; 155 } 156 } 157 } 158 }

継承についてです。
最初はメインメソッドの中に全部コードを入れていたのですが、複数クラスにしました。
同時にeclipseを使いはじめpackageを学びました。
sampul1>num>playerでpackageし、それだけだとplayerが孤立するのでextends numをしたのですが、上手く継承できていません。
現在の状況ではnumのname2の数字を入力が続く状況です。breakをつけても特に変わりはありませんでした。継承するにはどうしたらよいのでしょうか?

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

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

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

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

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

TN8001

2021/12/28 14:42

そもそもコンパイルできなくないですか? 長いメソッドを分割するのにクラスを分けることも選択肢の一つですが、まずはメソッドに分けることを検討されたほうがいいと思います。 たとえば // 重複しない3桁の数字を取得 private static char[] getNumber(Scanner sc) { /*省略*/ } のようなメソッドがあればそれだけでだいぶすっきりしますし、変なループも整理できると思います。
退会済みユーザー

退会済みユーザー

2021/12/28 15:02

現状知ってる構文が少ない中で、それを複数クラスにするより簡略化する方法を勉強する方が先ですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問