
最近学校のパソコンの授業で、Javaをやるようになったのですが、イマイチ分かりません。課題が出るので、自分でソースを作って、コンパイルしてみるのですが、エラーが出てしまいます。自分でエラーの内容が理解できたものもあったのですが、分からないのもありました。そこで、次の問題を教えていただきたいのです。
「学生番号と自分の誕生日の月をinetger型の変数に代入して、それらの変数を用いて学生番号を誕生日の月で割った値をdouble型の変数に型変換するプログラムを作りなさい」
という問題なのです。以下のソースは、自分でできる限り作ってみたものです。学生番号は12345678で、誕生日の月が11とします。
class kadai100{
public static void main(String args[]){
inetger number=12345678; //inetger型に学生番号を代入
inetger birth=11; //inetger型に生年月日の月を代入
double a; //型の宣言
inetger answer=number/birth; //answerは学生番号を月で割った値
a=(int)answer; //answerをaの型より小さくして、aに代入
System .out.println(a);
}
}
コンパイルすると、3、4、6行目に関してのエラーが出ます。一体、何で間違えなのでしょうか?教えてください。あと、inetgerという型についても教えてください。ネットで調べてみたのですが、基本的データ型というのしかなくて、その中には入っていませんでした。

No.4ベストアンサー
- 回答日時:
a-kumaさん 補足返しありがとうございます~。
cosmopolitanさんが抱えている課題は
「学籍番号と誕生日の月をそれぞれIntegerオブジェクトで管理して、学籍番号÷誕生日の月をdouble型に代入するようなプログラムを書く」
ということですか?
でしたら、、、
class kadai100{
public static void main(String args[]){
Integer number= new Integer(12345678); //Interger型に学生番号を代入
Integer birth= new Integer(11); //Interger型に生年月日の月を代入
double answer; //double型の変数の宣言
answer = number.doubleValue()/birth.doubleValue(); //a-kumaさんの回答をいただきました
System.out.println(answer);//answerの表示
}
}
ではいかが?
ちなみにキャストというのは、
double answer;
int a;
:
a = (int)answer;
のようにある型のデータを別の型に変えることをいいます。
この場合は、double型のanswerに格納されている値をとりだして、int型にして(小数部分を切捨てて)からaに代入しています。
(answer自身はdouble型のままで変わりません(切捨てもされません)。ご注意)
ちなみに answer = a; もキャストです。
この場合は、answer = (double)a; とはしなくてもいいことになっています。
う~ん。もう少し何処まで理解しているかがわかれば、適切に答えられるのだけど。
Javaについてちゃんと理解したいのか、とりあえず課題ができればいいのかとかもね。
(授業の課題ということでですので、授業で何か習ったはずなのに、何処まで理解してらっしゃるのかが全然見えなかったので…)
ちょっと小言みたいになってしまってお気を悪くされたらすみません。
これを機会にJavaをちゃんと勉強してほしいな~という気持ちと、
学生さんだからJava以外にもたくさん勉強することがあるから課題が出きればいいのかなという気持ちの
両方があるので、ちょっと書いてみました。
ではがんばって下さい。
型を変えることは知ってたのですが、そのことをキャストと呼ぶということは知りませんでした。私の理解は、ホントにまだまだ浅いです。一応、型変換のことは知っていましたが。それと、Javaについては、ちゃんと理解していきたいと思っています。課題ができても、納得がいかないと気が済まないタイプですし、Javaにはかなり興味があるので頑張ってみたいと思っています。あと、これは授業の課題なのですが、授業はただプリントを配るだけで終わりなのです。しかも、そのプリントが分かりにくくて・・・。ネットで検索しても、専門用語みたいのばかりで分からなくて。また、いろいろと質問を書き込むと思いますが、その時はどうかよろしくお願いします。今回はありがとうございました。
No.3
- 回答日時:
# 補足返しっ
> kana-tanさんがおっしゃるとおりに修正してからコンパイルしてのですが、それでもエラーが出てしまいました
エラーメッセージの通り、Integer というクラスには、割り算の演算子 / が使えませんし、
基本データ型である int へのキャストもできません。
> Integer answer=number/birth; //answerは学生番号を月で割った値
演算をするには、Integer クラスから値を取り出す必要があります。また、Integer
クラスの新しいインスタンスを利用するには、学生番号のところと同じように new
してあげる必要があります。
Integer answer = new Integer(number.intValue()/birth.intValue());
> a=(int)answer;
Java のクラスは、派生関係に無いとキャストできません。先の行と同じように
Integer クラスから値を取り出す、ということになります。
a = answer.doubleValue();
> それと「int→doubleのキャストをする必要があると思う」という意味が分かりません
「学生番号がつきで割り切れないときはどうするの?」ということなんです。
整数同士の割り算は、演算をした時点で余りがあると切り捨てられます。
せっかく実数(double)の変数 a に値を入れても、その前にまるめられてしまいます。
とはいうものの、質問のソースのコメントに「answerをaの型より小さくして、aに代入」と
ありますから、まるめられること自体は、題意に沿っているのかもしれません。
でも、それは割り算をした時点で丸められているので、キャストの必要はないです。
kana-tan が心配している「キャストの必要がある」という、割り切れないとき
にも、なるべくその精度を保つ場合には、こんな感じになります。
★ int を使う場合
double answer = (double)number/(double)birth;
★ Integer を使う場合
double answer = number.doubleValue()/birth.doubleValue();
余談ですが、Java のクラスのマニュアルは、Internet で参照できます(→参考URL)。
良い時代になったもんです :-)
参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/inde …
Javaって難しいです。まだ、完璧には理解できませんが、大体分かってきました。ありがとうございました。それにしてもIntegerの使い方って複雑ですね。

No.2
- 回答日時:
a-kumaさんの回答に少し補足させていただきます。
>スペルを間違っているから。整数を表すクラスは int か Integer です。
という部分ですが
int は基本データ型
Integer はクラス
といったほうがいいかなと思います。
で、Integerを使いたいのでしたら
Integer number = new Integer(12345678);
でしょうか。
補足終わり。
ここからcosmopolitanさんへアドバイス。
このソース、コンパイルは通っても題意通りにできてませんね。
(キャストの使い方が変です。多分問題では、int→doubleのキャストをする必要があると思うのですが…)
ついでにもうひとつ。この問題がほんとに「~inetger型の変数に~」と書いてあったのでしょうか。単なる転記ミスなのでしょうか? それが気になります。
この回答への補足
回答ありがとうございました。それで、kana-tanさんがおっしゃるとおりに修正してからコンパイルしてのですが、それでもエラーが出てしまいました。修正後のソースは以下の通りです。
class kadai100{
public static void main(String args[]){
Integer number=new Integer(12345678); //inetger型に学生番号を代入
Integer birth=new Integer(11); //inetger型に生年月日の月を代入
double a;
Integer answer=number/birth; //answerは学生番号を月で割った値
a=(int)answer;
System .out.println(a);
}
}
これでコンパイルすると、6行目に「演算子/はIntegerに適応できません。」というのと、7行目に「変換できない型」と表示されてしまいます。どうすればよいのでしょうか?それと「int→doubleのキャストをする必要があると思う」という意味が分かりません。キャストというもの自体良く分かりません。よろしかったら、また教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(お金・保険・資産運用) 先日口座を開設した時暗証番号の設定の時に担当してくださった銀行員の人に○の数字を2つ入れてもいいんで 5 2023/02/18 06:42
- 大学受験 国立受験 11月からの大逆転劇を起こすには 7 2022/11/14 19:24
- 大学受験 大学生に保護者なんかいるの? 4 2023/08/23 16:52
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 大学受験 大学入学手続きのミス大量発生 1 2022/11/13 22:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
初心者によるプログラム
-
VB6.0 DataGridでのfirstRowの...
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
DataTableの値を変数に代入したい
-
Excel VBAでイコール二回使えま...
-
DataColumn型の使用方法
-
【Excelマクロ】グラフの最小値...
-
JavaScriptをURLから直接実行し...
-
【VBA】複合代入演算子
-
テキストエディタ作成で「元に...
-
gridViewの行選択解除
-
Excel-vba 文字列と変数を...
-
定数のメリットとは?
-
VBAの定数の使い方で、計算値を...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VBAで配列のNULL判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Accessコンボボックスにレコー...
-
DataTableの値を変数に代入したい
-
条件演算子 ? :
-
インクリメント演算子の前置(+...
-
プログラミングで変数と関数の...
-
gridViewの行選択解除
-
無名関数のメリットがよくわか...
-
stdpicture型の変数に、、
-
論理演算子について
-
COBOLの変数
おすすめ情報