「一気に最後まで読んだ」本、教えて下さい!

これも試験問題らしくて自分でやってみましたのであってるかどうか自信なくて どなたかみてみていただけたらと思います.よろしくお願いします。

下のソースファイルをコンストラクタを用いたものに修正しなさい

class Sconst{
int x,y,z;
void print(){
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}
class ExConstTest{
public static void main (String[] args ){
Sconst sc=new Sconst();
sc.x=10;
sc.y=30;
sc.z=5;
}
}
-------------------------------------------------------------
class Sconst{
int x,y,z;
Sconst(){
x=10;
y=30;
z=5;
}
}
class ExConstTest{
public static void main (String[] args ){
Sconst a1;
Sconst a2;
Sconst a3;
a1=new Sconst();
a2=new Sconst();
a3=new Sconst();
System.out.println(a1.x);
System.out.println(a2.x);
System.out.println(a3.x);
}
}

A 回答 (3件)

・クラスSconstの関数printをなくしたのはなぜ?


・なぜa1~a3を用意したの?
・なぜa1.xとか使ってるの? public と明記していないから、使えないはずだけど。

ツッコミどころ満載ですが、一応私がやるとこんな感じ?
※整形のため、全角スペースを使っています。
class Sconst {
 int x,y,z;
 Sconst() {
  x = 10; y = 30; z = 5;
 }
 public void print() {
  System.out.println(x);
  System.out.println(y);
  System.out.println(z);
 }
}

class ExConstTest {
 public static void main (String[] args) {
  Sconst a1;
  a1 = new Sconst();
  a1.print();
 }
}
    • good
    • 0
この回答へのお礼

phoenix343さん ありがとうございます.私最初したかったのはphoenix343さんが書いてくださったものです.
printを後ろに移動しました
a2,a3が余計でした
a1.xは使えないですね。。(私のやったのでは)

もう一回自分で整理してみます.

大変助かりました.本当にありがとうございます.

お礼日時:2008/07/26 12:46

僕的にはこう。



public class Sconst {
private int x,y,z;

public Sconst(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}

public void print() {
System.out.println(this.x);
System.out.println(this.y);
System.out.println(this.z);
}
}

public class ExConstTest {
public static void main (String[] args) {
Sconst sc = new Sconst(10, 30, 5);
// ここにsc.print()は無くて良いの?
}
}

x、y、zの値は「このクラスを作る側」に指定させないといけない。それを、値を受け取るコンストラクタを用意してやる事で、newのタイミングで受け渡すようにしなさい、って事じゃないかな。
    • good
    • 0
この回答へのお礼

anmochiさん ありがとうございます.

anmochiさんのやり方も大変参考になりました.勉強不足ですいませんでした。

お礼日時:2008/07/26 12:48

> Sconst(){


>x=10;
>y=30;
>z=5;
>}

どうして Sconst は x, y, z が各々 10, 30, 5 であると「知っている」のですか?
それが最も大きな問題だと思います。

この回答への補足

それぞれの初期値を与えてるんですね

補足日時:2008/07/26 12:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!