dポイントプレゼントキャンペーン実施中!

「これならわかるJava」という本でjavaを勉強してます。
以下のソースコードをコンパイルした所、

「注:DogList.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください」

と、表示されます。
ネットで色々と調べてみましたが上手く行きません。

よろしくお願い致します。


import java.io.*;
import java.util.*;

class Dog
{
private String name;
private int energy;
public Dog(String n, int e){
name = n;
if(e < 0) e = 0;
energy = e;
}
public Dog(){
this("未定",50);
}
public void bark(){
if(energy == 0){
System.out.println("お腹が減ってほえられないよ。");
return;
}
System.out.println("わん、わん!");
energy--;
}

public void intro(){
System.out.println("僕の名前は" + name + "だ。わん。");
System.out.println("エネルギーは" + energy +"だ。わん。");
}
public void eat(int e){
if(e < 0){
System.out.println("マイナスは与えられません。");
return;
}
energy += e;
}
public String getName(){
return name;
}
public void setName(String n){
name = n;
}
public int getEnergy(){
return energy;
}
public void setEnergy(int e){
if(e < 0) e = 0;
energy = e;
}
public String toString(){
return "僕の名前は" + name + "だ。わん。\n"
+"エネルギーは" + energy + "だ。わん。";
}
}

class DogList
{
public static void main(String[] args) throws IOException
{
Vector dogs = new Vector();
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str, name;
int n, energy;
for(;;){
System.out.println("名簿:どうしますか?");
System.out.println("1 一覧 2 追加 3 終了");
str = br.readLine();
n = Integer.parseInt(str);
if(n == 1){
for(int i = 0; i < dogs.size(); i++){
((Dog)dogs.elementAt(i)).intro();
System.out.println("-----");
}
}
else if(n == 2){
System.out.println("名前を入力:");
name = br.readLine();
System.out.println("エネルギーを入力:");
str = br.readLine();
energy = Integer.parseInt(str);
dogs.addElement(new Dog(name, energy));
}
else{
break;
}
}
}
}

A 回答 (4件)

あ, もっとごめん. dogs にしないといかんわ.



まあ, 「出てきたエラーメッセージがどのような意味を持っているのか」とか「それでなんでそうしなきゃならんのか」とかを考えながら進めていかないと「勉強」にはならないけどね. 単に「本に書いてあるプログラムをそのまま入力して, 動けば OK 動かなかったら人に聞く」では多分身につかない.
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
具体的な例を挙げて下さって、ありがとうございました。

お礼日時:2011/04/05 10:57

あぁごめん,


Vector<Dog> = new Vector<Dog>();
じゃだめだ.
Vector<Dog> dog = new Vector<Dog>();
に決まってるじゃん>おれ.

この回答への補足

返信ありがとうございました。

補足日時:2011/04/05 10:58
    • good
    • 0

いまでは Vector はジェネリックになっているので


Vector dogs = new Vector();
のところを
Vector<Dog> = new Vector<Dog>();
とするのがよりよいでしょう.

そうすれば
((Dog)dogs.elementAt(i)).intro();
の行ももっとシンプルに
dogs.elementAt(i).intro();
で OK.

詳しくは「ジェネリック」あたりで調べてください.

この回答への補足

Tacosan様、回答ありがとうございます。

ご指摘のとおりコードを書き換えてみましたが上手く行きませんでした。

「DogList_2.java:59: ';' がありません。
Vector<Dog> = new Vector<Dog>();」

と、表示されてしまいます。

ゲネリックについても検索してみましたが、初心者の私には理解出来ません。

以下、新しく書き換えたコードです。

import java.io.*;
import java.util.*;

class Dog
{
private String name;
private int energy;
public Dog(String n, int e){
name = n;
if(e < 0) e = 0;
energy = e;
}
public Dog(){
this("未定",50);
}
public void bark(){
if(energy == 0){
System.out.println("お腹が減ってほえられないよ。");
return;
}
System.out.println("わん、わん!");
energy--;
}

public void intro(){
System.out.println("僕の名前は" + name + "だ。わん。");
System.out.println("エネルギーは" + energy +"だ。わん。");
}
public void eat(int e){
if(e < 0){
System.out.println("マイナスは与えられません。");
return;
}
energy += e;
}
public String getName(){
return name;
}
public void setName(String n){
name = n;
}
public int getEnergy(){
return energy;
}
public void setEnergy(int e){
if(e < 0) e = 0;
energy = e;
}
public String toString(){
return "僕の名前は" + name + "だ。わん。\n"
+"エネルギーは" + energy + "だ。わん。";
}
}

class DogList_2
{
public static void main(String[] args) throws IOException
{
Vector<Dog> = new Vector<Dog>();
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str, name;
int n, energy;
for(;;){
System.out.println("名簿:どうしますか?");
System.out.println("1 一覧 2 追加 3 終了");
str = br.readLine();
n = Integer.parseInt(str);
if(n == 1){
for(int i = 0; i < dogs.size(); i++){
dogs.elementAt(i).intro();
System.out.println("-----");
}
}
else if(n == 2){
System.out.println("名前を入力:");
name = br.readLine();
System.out.println("エネルギーを入力:");
str = br.readLine();
energy = Integer.parseInt(str);
dogs.addElement(new Dog(name, energy));
}
else{
break;
}
}
}
}

補足日時:2011/04/04 17:01
    • good
    • 0

-Xlint:unchecked オプションを指定して再コンパイルすればOK。

この回答への補足

morchin様、迅速な回答ありがとうございます。

「-Xlint:unchecked オプションを指定して再コンパイル」とは
具体的にどのようなコマンドを入力すれば良いのかを教えて頂ければ、
大変助かります。

補足日時:2011/04/04 16:18
    • good
    • 0
この回答へのお礼

レスありがとうございます。

お礼日時:2011/04/05 10:59

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