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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

Q&A

解決済

1回答

885閲覧

オブジェクト指向と二次元配列

suuuvb0706

総合スコア1

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

0グッド

0クリップ

投稿2020/06/09 14:00

前提・実現したいこと

二次元配列を用いて表示したいのですが、オブジェクト指向と二次元配列の結びつけがうまくできません。ごちゃごちゃですがヒントとなることを教えていただきたいです。どうかよろしくお願い致します。

問題文
Othelloクラスにthisを利用したコンストラクタを追加。フィールド変数のためのアクセサメソッドを追加し,カプセル化。
Othelloクラスを利用して1つのオブジェクトを作成する実行クラスを作成。アクセサメソッドを利用して以下の出力が得られるよう値の再設定、表示を行いなさい。ここでは,拡張forを利用して表示するものとする.

表示結果
o o o
o x x
o x o

x o x
o x o
x x o

書いたプログラム
import java.util.*;

public class Main {
public static void main(String args[] ){
Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"});
a.show();
System.out.println();
a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"});
a.show();
}
}
class Othello {
char[][] board;

public Othello(char[][] board){ this.board=board; } public void setBoard(char n){ board = n; } public char getBoard(){ return board; } public void show(){ for(int m=0;m<3;m++){ for(int i=0;i<3;i++){ System.out.print(board[m][i]+" "); } } }

}

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

illegal start of expression Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: illegal start of type Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: expected Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: not a statement Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: ';' expected Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: illegal start of expression Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: not a statement Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: ';' expected Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:6: error: illegal start of expression Othello a = new Othello({"o","o","o"},{"o","x","x"},{"o","x","o"}); ^ Main.java:9: error: illegal start of expression a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: not a statement a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: ';' expected a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: illegal start of expression a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: not a statement a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: ';' expected a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: illegal start of expression a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: not a statement a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: ';' expected a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ Main.java:9: error: illegal start of expression a.setName({"x","o","x"},{"o","x","o"},{"x","x","o"}); ^ 19 errors

該当のソースコード

java

試したこと

わかりやすいJavaオブジェクト指向、などの教科書を参照

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず {"o", "o", "o"} は {'o', 'o', 'o'} の間違いですよね。
String[] じゃなくて char[] なのですから。


{a, b, c} という記法は、限定的な文脈でのみ許された書き方です。
一番良く見るのは配列の初期化ですね。

Java

1int[] arr1 = {3, 1, 4}; // ok 2 3int[] arr2; 4arr2 = {3, 1, 4}; // ng: 式の開始が不正です

その場で配列オブジェクトを作りたい場合は、次のように書いて下さい。

Java

1arr2 = new int[]{3, 1, 4}; // ok

いわゆる二次元配列にしたいなら、こう。

Java

1int[][] arr22; 2arr22 = new int[][] { 3 new int[] {3, 1, 4}, 4 new int[] {1, 5, 9}, 5 new int[] {2, 6, 5} 6};

提案

new XXX[] {...} と毎度書くのはしんどいので、可変長引数を利用してみては。

Java

1public Othello(char... marks) { // marksの型はchar[] 2 if(marks.lengthが不適切) { 3 例外を投げるなりなんなり; 4 } 5 6 marksの要素をboardに詰めなおす; // ちょっと工夫が必要です 7}

Java

1new Othello('o', 'o', 'o', 'o', 'x', 'x', 'o', 'x', 'o');

楽な一方でコンパイル時のチェックは弱化するので、この方法が最良というわけでは無いですが。

投稿2020/06/09 14:12

編集2020/06/09 14:48
LouiS0616

総合スコア35660

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

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

suuuvb0706

2020/06/09 14:40

なるほど。分かりました。やってみます。ありがとうございます。
LouiS0616

2020/06/09 14:49

思いついたことを追記しました。 書いているとおり最良の方法では決して無いですけれど、検討の余地はあるかと思います。
suuuvb0706

2020/06/09 14:57

分かりました。ありがとうございます。 本当に助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問