- 締切済み
Javaのプログラムに関する質問です。
以下のプログラムはコマンドライン引数で複数の数字を 受け取り、int型配列arrayに受け取った値を代入して arrayの先頭から順番に表示しています。 変換クラスと、表示クラスを作成し (1)の部分を変換クラスで、 (2)の部分を表示クラスで行うように修正してください。 */ class ClassAdd08{ public static void main(String[] args){ HenkanClass subA = new HenkanClass();//HenkanClassのインスタンス化 subA.henkan(len,array);//変換メソッドの呼び出し HyoujiClass subB = new HyoujiClass();//HyoujiClassのインスタンス化 subB.hyouji();//表示メソッドの呼び出し } } //**************************** (1) ********************************** class HenkanClass{//変換クラスを新規作成 public void henkan(){//変換メソッド int len = args.length; int[] array = new int[len]; for(int i = 0; i < len; i++){ array[i] = Integer.parseInt(args[i]); } } } //**************************** (1) ********************************** //**************************** (2) ********************************** class HyoujiClass{//表示クラスを新規作成 public void hyouji(){//表示メソッド System.out.println("受け取った引数:" + len + "個"); for(int i = 0; i < len; i++){ System.out.println((i + 1) + "個目の数:" + array[i]); } } //**************************** (2) ********************************** } クラスのインスタンス化と、対応するメソッドまでは作成したのですが、その後どうすればいいか分かりません。考え方やヒントなど、皆様の知恵をどうかお貸しください。お願い致します。
- chelsea00
- お礼率2% (1/42)
- Java
- 回答数2
- ありがとう数6
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- KSOH
- ベストアンサー率93% (29/31)
んー困りました。質問者さんがどこでひっかかっているのか「やはり解くことが出来ません」というコメントから察することができません。 こういった課題は基本文法を学ばせる、あるいは基本文法が理解ができているかを確認するためのものですから解くには文法を理解する必要があります。Javaの全ての文法を知る必要はありませんが必要なところ(メソッドの戻り値の型の宣言やreturn文)だけは理解しなければなりません。基本文法は教科書で理解すべきと私は思います。ちょっと厳しいように感じるかも知れませんがなんとか頑張ってこの壁をクリアしてみてください。
- KSOH
- ベストアンサー率93% (29/31)
このプログラムがすべきことは 複数の文字列整数配列へ変換=>変換結果を表示 となります。最後に何を表示すべきかというと変換した結果の配列です。変換した結果というのはどこで得るべきかというと変換しているメソッドになります。メソッドから何かを得るにはメソッドの戻り値から得るというのが基本です。 つまりhenkanメソッドの実行結果として変換結果の配列データを受け取り、受け取った配列をhyoujiメソッドへ引数として渡してこれを表示するというふうになります。 さてメソッドの引数に情報を渡すやりかたはおわかりのようですので、メソッドから値(変換結果の配列)を戻す方法を教科書から探してみてください。
関連するQ&A
- javaのオーバーライドについての質問です。
* クラスParent04に受け取ったString配列の中身を全て大文字に変換するChangeメソッドが定義されています。クラスParent04を継承するクラスChild04でChangeメソッドを オーバーライドして、String配列の中身を全て小文字に変換するように変更してください。 その後クラスOverRide04のmainメソッドからChangeメソッドを呼び出して、 変換後のString配列の要素を全て出力してください。 */ // オーバーライドされるので覆い隠される class ORParent04{ public String[] Change(String[] strArray){ int len = strArray.length; String[] Array = new String[len]; for(int i = 0; i < len; i++){ Array[i] = strArray[i].toUpperCase(); } return Array; } } // ORParent04クラスを継承し、ORChild04でオーバーライド // こちらが適用される。 class ORChild04 extends ORParent04{ //ここからプログラムを追加してください。 public String[] Change(String[] strArray){ int len = strArray.length; String[] Array = new String[len]; for(int i = 0; i < len; i++){ // toLowerCaseで小文字に変換 Array[i] = strArray[i].toLowerCase(); } // 値を返す return Array; } } class OROverRide04{ public static void main(String[] args){ // ORChild04クラスのインスタンス化 ORChild04 ORchild04 = new ORChild04(); //ここからプログラムを追加してください。 // Changeメソッドの呼び出し:戻り値String[],引数String[] String[] array = ORchild04.Change(String[] args); // 表示 System.out.println(array); } } このような問題で、現在これをコマンドプロンプトでコンパイルすると、mainメソッド内のString[] array = ORchild04.Change(String[] args);メソッド呼び出し部分が指定され、 「'.class'がありません」 「;がありません」 という2つのエラーが表示されます。ネットでエラー表記の意味を検索し、コードを確認しましたが、「{}」と上記より上の行の;が特に抜けている、という訳ではありません。勿論自分が何か見落としている為にコンパイルエラーになるのですが、戻り値と引数の値は合わせているので、心情としては「動けジ・O!何故動かん!?」という具合です。 どなたか考え方やヒントなどお願い致します。後もう少しだと思うのですが。。。
- ベストアンサー
- Java
- javaのプログラムに関する質問
* 入力された数値の数だけ、"*"を表示するメソッド * displayAsterメソッドを作成して下さい。 */ public class MethodAdd3 { public static void main(String[] args){ // 入力された数字をint型の数値に変換 int iInput = Integer.parseInt(args[0]); // displayAsterメソッドの呼び出し displayAster(iInput); } // ここにdisplayAsterメソッドを作成 public static void displayAster(int iInput1){ for(i=0; i<iInput1; i++){ System.out.print("*"); } System.out.println(""); } ここまで出来たのですが、コンパイルエラーになってしまいます。 考え方かヒントなど、知恵をお貸しください。
- ベストアンサー
- SE・インフラ・Webエンジニア
- 親クラスから子クラスへアクセス。
親クラスから子クラスへアクセス。 お世話になります。 以下のプログラムについて考えています。 public class Main{ public static void main(String[] args) { SubA subA = new SubA(); SubB subB = new SubB(); Super[] subs = {subA,subB}; subs[1].method(); subs[2].method(); } } class Super{ String str = "親"; public void method(){ System.out.println(str); } } class SubA extends Super{ String str = "子A"; } class SubB extends Super{ String str = "子B"; } この場合、出力結果は当然 親 親 になります。 これを子クラスの str を表示するようにしたいのです。つまり 子A 子B です。 ただし、子クラスで method() をオーバーライドしたり、super.str = "子A" のように親クラスを書きかえずにです。 子クラスが何百種類もある場合、全く同じmethod()を書く無駄や、変更があったときにそれを全てを修正しなければならないことを避けたいのです。 何か良案がありましたら、ぜひご教授ください。よろしくお願いします。
- 締切済み
- Java
- javaプログラムについて
*/コマンドライン引数で2つの数字と1つの記号を受け取ります。 * //受け取った記号が『+』ならplusメソッドを呼び出し、 * //受け取った記号が『-』ならminusメソッドを呼び出し、 * //受け取った記号が『×』ならmultiplyメソッドを呼び出し、 * //受け取った記号が『÷』ならdivideメソッドを呼び出し、 * //それ以外が入力された場合は『計算できません。』と表示する * //プログラムを作成してください。 * */ public class MethodAdd9 { public static void main(String[] args) { int input1 = Integer.parseInt(args[0]); int input2 = Integer.parseInt(args[1]); String sign = args[2]; //ここにプログラムを追加してください if(sign.equals("+")){ plus(input1,input2);//プラスメソッドへ } if(sign.equals("-")){ minus(input1,input2);//マイナスメソッドへ } if(sign.equals("*")){ multiply(input1,input2);//掛算メソッドへ } if(sign.equals("/")){ divide(input1,input2);//割算メソッドへ } } // 四則演算を行うメソッドを追加 //プラスメソッド表示 public static void plus(int a,int b){ int c=a+b; System.out.println(a+b); } //マイナスメソッド表示 public static void minus(int d,int e){ int f=d-e; System.out.println(d-e); } //掛算メソッド表示 public static void multiply(int g, int h){ int i=g*h; System.out.println(g*h); } //割算メソッド表示 public static void divide(int j,int k){ int l=j/k; System.out.println(j/k); } } ここまで出来て、記号を認識してくれるようにはなったのですが、何故か"*"掛算の記号だけ読み込んでくれません。また、ここから「計算出来ません」と表示させるにはどうすれば良いでしょうか。知恵をお貸しください。
- ベストアンサー
- SE・インフラ・Webエンジニア
- javaプログラム 合ってるかお願いします
プログラムは非常に苦手なため合ってないと思いますが、合ってないのは何が正解かを教えてください。 よろしくお願いします 1 ローカル変数を全て答えよ args,num 2 インスタンス変数を全て答えよ num 3 インスタンスメソッド名を答えよ Example2 4インスタンスメソッドを呼び出している行 public class Example2{ int num; public static viod main(String[] args){ Example2 ex2 = new Example2(5); int a = ex2.getNum(); System.out.println(a); } Example2(int num){ this.num=num; } int getNum(){ return this.num; } }
- ベストアンサー
- Java
- Javaのプログラムについて教えて下さい
//Sample.java class Sample void methodA(int temp) if(temp == 0) String str = new String("Exception"); Integer.parseInt(str); else if(temp == 1) int[] array = new int[temp]; else Exception exc = new Exception(); throw exc; //SampleMain.java class ExceptionMain public static void main(string[] args) Sample sam = new Sample(); Int temp = Integer.parseInt(args[0]); Sam.method(temp); } } このプログラムの場合、ExceptionMainに新たにコードを加えて、コマンドライン引数が0,1,その他の場合に例外メッセージを出力するプログラムを教えて下さい。
- ベストアンサー
- Java
- javaの質問です。
明日JavaのBronze試験を受けに行くのですが、全然わからずに困っています。 紫色のJavaプログラマBronzr[SE7]という本を使用しています。 本の模試の問題です。 37 Class Super{ static void method(){ System.out.println("Super"); } } Class Sub extends Super{ static void method(){ System.out.println("Sub"); } } Class Test { public static void main(String[] args){ Super obj = new Sub(); obj.method(); } } この問題はSuperが表示されるらしいのですが、理由がわかりません。 サブクラスをインスタンス化しているので、Subが表示されるというのなら理解できます。staticが関係あるのはなんとなくわかるのですが、、、、、、なぜSuperなのかがわかりません。 解答ではスーパークラスの型にサブクラスを入れているからと簡単に書いてあります。 詳しく説明していただけると助かります。
- ベストアンサー
- Java
- コマンドライン引数 java
学校で、2進数表記された文字列number1、number2…numberNを数値に変換し、合計を算出し、2進数表記の文字列に変換した結果を出力するプログラムを組む課題が出ました。 java Lesson06 number1 number2 … numberN の形式で受け取ったコマンドライン引数を元に、処理を行います。 ※number1からnumberNは、全て0か1のみで構成されている文字列 * 文字列の加算 * System.outまたはSystem.errのprint系メソッドで、Stringの値を受け取るもの以外 * Integerなどのラッパークラス * DecimalFormatなどの書式変換クラス 上記の機能は使ってはいけません。 ---- class Lesson{ public static void main(String args[]){ int sum; for(int i = 1; i < args.length; i ++) { int len = strlen(args[i]);//※ for(int j = 0; j < len; j ++) { if(args[i][len - j - 1] == "1") {//※ sum = pow(2, j) + sum;//※ } } } } } ---- とりあえず、与えられた二進数を計算する部分まで作ってみたのですが、※の部分でエラーが出てしまいます。 コマンドライン引数もよく分からなくて困っているので、教えていただければ助かります。 以上よろしくお願いいたします。
- ベストアンサー
- Java
- javaプログラムについて
* クラスの出席番号順にString型配列nameに名前が、 * int型配列scoreにテストの点数が格納されています。 * * 出席番号1 大悟 74点 * 出席番号2 琴音 70点 * 出席番号3 勇輝 88点 * ・ * ・ * ・ * ・ * ・ * * このクラスの最高得点者の名前と、最低得点者の名前を * 表示するメソッドを作成してください。 * */ public class MethodAdd8 { public static void main(String[] args){ String[] name = {"大悟", "琴音","勇輝","葵","綾乃","和樹","凛","愛花","結愛","孝太郎"}; int[] score = {74,70,88,82,96,64,80,61,72,79}; //メソッドの呼び出し int max=saikou(score); //最高得点メソッドへ System.out.println(max); int min=saitei(score); //最低得点メソッドへ System.out.println(min); } //ここにメソッドを追加してください public static int saikou(int[] score){ //最高得点者メソッド int max=score[0]; for(int i=1; i<score.length; i++){ if(score[i]>max) max=score[i]; } return max;//値を返す } public static int saitei(int[] score){ //最低得点メソッド int min=score[0]; for(int i=1; i<score.length; i++){ if(score[i]<min) min=score[i]; } return min;//値を返す } } これで最高得点と最低得点は表示されるのですが、ここからどうやって最高得点者「綾乃」と最低得点者「愛花」を表示するのか分かりません。どなたか御教授お願い致します。
- ベストアンサー
- Java
- Javaのプログラムについての質問です。
Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。 注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。 以下は極最初期のソースになります。 import java.util.List; public interface Interface{ int size(); boolean add(); boolean remove(); void clear(); get(); set(); } public class LocalList implements Interface{ class Main implements LocalList { public static void main(String[] args) { } } Listインターフェースについてネットで調べてはいるのですが、具体的な解決方法が見えてきません。 どなたか参考ソースや考え方などを教えていただけないでしょうか。よろしくお願い致します。
- 締切済み
- SE・インフラ・Webエンジニア
補足
KSOH様、回答ありがとうございます。回答を参考にしてはいるのですが、昨日からやはり解くことが出来ません。もしお手透きならば、コードを少し記述して頂けないでしょうか?図々しくて申し訳ありません。