JAVAプログラミングとしては非常に基本的なことだと思うのですが、いくつかわからないことがあるので教えてください。
まず、0~3までの数字をchar型の配列要素として定義するために、
private static final char[] nch = {○○};
の○○の部分に記述しなければならないことは何ですか?
また、繰り返し構文を使うのに、inputstrの文字数の回数だけ繰り返し・配列nchの要素数の回数だけ繰り返しをそれぞれ{int i = 0 ; ○○; i ++} ・ {int j = 0 ; ××; j++}と記述するのですが、○○、××の部分の記述内容はどうなるのでしょうか?
最後に、StringBufferで定義されたbfnをString型に変えて戻り値とするにはreturnの後にどのように記述すればよいのでしょうか?
まだプログラミングを始めたばかりで応用がほとんどわからない状態です。回答よろしくお願いします。
No.1
- 回答日時:
質問内容から見ると、オブジェクト指向 & 変数の処理方法の理解がまだ掴めてないのかと思われます。
>private static final char[] nch = {○○};
{ } 内の引数の数によって、配列要素は決まってきます。
例)
private static final char[] nch = {a,b,c};
*解説*
・char[] … 1文字分、半角英数、全角だと"文字列"に成ってしまうのでerrorになる。
・{a,b,c} … 要するに以下の内容でも同じ意味合いになる。 表記の簡略化的な部分でメリットがあるかと。
char[0] = "a"
char[1] = "b"
char[2] = "c"
>{int i = 0 ; ○○; i ++}
for文の定義の理解が必要 ※必須になるかと
例)
for(i=0; i<=2; i++){
繰り返す内容
}
*解説*
変数i に対して 0,1,2 …つまり3回繰り返せという命令。
javaの変数の開始は i=0; 部分で定義されている『0』の部分に注目、"開始番号"の宣言の意味合いになります。
『i』は変数名になります。
for文の解説書を参考にして見てみると、大抵『i,j』の表記が多いかと。別にここは a , b , だろうが、好きに変更可です。 1文字という制限もありません。
例) abcdefghijklmnopqrstuvxyz だろうがOKです。
>StringBufferで定義されたbfnをString型に変えて戻り値とするにはreturnの後にどのように…
classの定義方法の理解 & インスタンス化って方法もあります。
良い参考例があるので記載しておきます。
【問題】
次のプログラムの実行結果として正しいものを選択して下さい。
class UseStringBuffer{
void method(StringBuffer a,StringBuffer b){
b.append(" There");
a=b;
}
}
public class ObjectArgument{
public static void main(String args[]){
StringBuffer sb1 = new StringBuffer("Happy");
StringBuffer sb2 = new StringBuffer("Happy");
UseStringBuffer usb = new UseStringBuffer( );
usb.method(sb1,sb2);
System.out.println("sb1 is " + sb1 + ":sb2 is " + sb2);
}
}
【選択肢】
a. 上記のいずれでもない
b. sb1 is Happy There:sb2 is Happy There
c. sb1 is Happy:sb2 is Happy There
d. sb1 is Happy There:sb2 is Happy
e. sb1 is Happy:sb2 is Happy
【解説】
Javaの基本事項として、次のポイントをおさえておきましょう。(1)基本データ型変数同士で代入をすると、内容は書き換わります。(2)参照型変数同士で代入をすると、両者が同じインスタンスを参照するようになるだけで、代入される方が参照していたインスタンスの内容は書き換わりません。
答え c
あとは、繰り返し数をこなして行けばだんだんと理解してくるかと。参考URLはjavaのバージョンによって異なるので、最新のものを手に入れてください。
以上、長文になりましたがご参考ください。
参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/inde …
この回答への補足
回答ありがとうございます。
char型に関しては解決されました。ありがとうございます。
for文についてですが、for文自体はわかっているのですが、実行の際に引数として与えた文字列の数をカウントしてその回数文だけ繰り返さなくてはならないのですが、int len = inputstr.length()を使わずに記述する方法がわかりません。i < inputstr.lengthとすればいいのでしょうか?
return文に関してもreturnそのものがよくわかっていないのか…
参考書(のようなもの)でやってみましょう、ということで出ている穴埋め方式の問題なのですが実行できずに困っています。
No.2ベストアンサー
- 回答日時:
こんにちは。
問題の全部を見ていないので正解かどうかわかりませんが、
●文字列の長さ、配列の長さ
文字列変数inputstrが与えられていて、inputstrの長さ分だけ繰り返せなら、
for (int i=0; i < inputstr.length(); i++) {
とlength()メソッドを呼ぶしかないと思います。
あわせて、配列nch が書かれているので、これに要素数分繰り返しなら、
for (int i=0; i < nch.length; i++) {
とlengthプロパティを使います(メソッドではありません。括弧がないことに注目)。
問題の意図が「for文のなかに直接length()メソッド/lengthプロパティを使うな」といった意味であれば、
int strLength = inputstr.length();
for (int i=0; i < strLength; i++) {
とか
int arrayLength = nch.length;
for (int i=0; i < arrayLength; i++) {
とかになるのではないでしょうか。
●StringBufferからStringへ
StringBufferクラスには、文字列Stringに変換するメソッドがあります。
toString()メソッドです。これを呼んで、returnするではないでしょうか?
●charについて
半角でも全角でも、また、英数かなカナどれでも1文字は1文字です。ちょっと難しいですがUTF-8という文字コードで1組のコードで表せれば、char1つで取り扱いできます。
つまり、
char c1 = '1';
char c2 = '1';
char c3 = 'あ';
char c4 = 'ア';
どれも、合法。エラーにはなりません。
ただし、シングルコーテーションではなく、ダブルコーテーションで囲むと、1文字でも、「文字」ではなく「文字列」になりますので、ご注意ください。
char c1 = "1";
char c2 = "1";
char c3 = "あ";
char c4 = "ア";
いずれもコンパイルエラーになります。
回答ありがとうございます。
lengthプロパティをメソッドと勘違いして()をつけてしまっていたのと、charではダブルコーテーションで囲ってしまっていました。
的確な指摘、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Java Java 南京錠 2 2023/02/04 11:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
n番目に大きな値を探索する
-
配列の中に複数存在する数がい...
-
[Ljava.lang.Stringってなんですか
-
Java配列の問題を教えてくださ...
-
『args[]』とは?
-
配列で、値の入っている要素数...
-
ArrayListを使った多次元配列の...
-
strutsでArrayListの中の配列の...
-
【Ajax通信&Java】配列の受け取...
-
Javaで文字と数字が混ざったも...
-
この警告はどうすれば?
-
半角カナの判別方法
-
java 大文字と小文字を入れ替える
-
配列を使ってカレンダーを表示...
-
Java・配列の問題です。 int 「...
-
CSVファイルの、列だけ取得したい
-
Java 配列の問題です。 写真の...
-
cloneメソッドについて (java)
-
【C#】ハッシュテーブル(連想...
-
Javaで文字を漢字であるか否か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
Java配列の問題を教えてくださ...
-
配列の中に複数存在する数がい...
-
配列で、値の入っている要素数...
-
java
-
『args[]』とは?
-
javaで大容量テキストファイル...
-
C#で動的配列Listの中身をListB...
-
csvファイルを2次元配列に格納
-
Javaで文字を漢字であるか否か...
-
フローチャート
-
javaについて
-
【C#】ハッシュテーブル(連想...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列について
-
n番目に大きな値を探索する
-
cloneメソッドについて (java)
おすすめ情報