こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JAVAの初心者です.

import java.io.*;
class Sample3
{
public static void main(String args[])throws IOException
{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int meny;
int max = 0;
int kingaku[];
kingaku = new int[5];
char ss[][];
ss = new char[5][80];
do{
String hako = br.readLine();
meny = Integer.parseInt(hako);
System.out.println("1:入力とその長さ");
System.out.println("2:データ入力");
System.out.println("3:データ表示");
System.out.println("4:おしまい");
switch(meny){
case 1:
System.out.println("文字を入力してください。");
String input = br.readLine();
System.out.println(input + "は" + input.length + "文字です。");
break;

case 2:
if (max == 0){
System.out.printin("登録をしてからお選びください。");
}else{
System.out.println("名前を入力してください。");
String ss[max] = br.readLine();
System.out.println("金額を入力してください。");
String kingaku[max] = br.readLine();
System.out.println(ss[max] + "さんで" + kingaku[max] + "を登録します。");
max++;
}
break;

case 3:
System.out.println("現在登録人数は" + max + "人です。");
for(int aa = 0;aa<max;aa++){
System.out.println(name[max] + kingaku[max]);
}
break;
}
}while(meny != 4);
}
}
上記のソースなのですが、コンパイルで今のところ2つエラーが出てしまうのです。
String ss[max] = br.readLine();
String kingaku[max] = br.readLine();
の所がエラーと表示されます。
javaは入力した文字を表示するだけでしたら 
  = Integer.paruseint()する必要ないですよね??
初心者ならではの質問でごめんなさい。
ご教授宜しくお願いいたします。

投稿日時 - 2006-03-10 01:14:10

QNo.2018889

困ってます

質問者が選んだベストアンサー

1. int kingak[]; → String kingak[];

2. kingaku = new int[5]; → kingaku = new String[5];

3. char ss[][]; → String ss[];

4. ss = new char[5][80]; → ss = new String[5];

5. input.length → input.length()

6. printin → println ※登録のところ

7. String ss[max] → ss[max]

8. String kingaku[max] → kingaku[max]

9. name[max] → ss[max]

気が付いたところを並べて見ました。

参考になればよいのですが・・・

投稿日時 - 2006-03-10 01:54:42

お礼

javaは文字領域みたいなものは気にしないでよろしかったと思ってもいいのでしょうか??
7. String ss[max] → ss[max]
8. String kingaku[max] → kingaku[max]
これは上でStringで宣言してるから入力の際はStringは必要ないって事でいいのでしょうか??
ってことは、プログラム組むときはすべて
始めにint xxx[] = new int[x]
ではなく、String xxx[] = new String[x]ってやったほうが少しだけ手間が省けるってことでいいのでしょうか??
初心者の質問でごめんなさい。もう少しだけ締め切りを延ばしていますのでお返事いただけたら嬉しいです。

投稿日時 - 2006-03-10 12:05:09

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

まず、文字領域に関しては、気にしなくてもいいです。

String型は格納した文字列分、自動的に領域を確保します。

また、変数は宣言するときと違って、使用する際はStringはつける必要はないです。

また、宣言については、格納するデータの種類に応じて型を決めなくてはいけません。

ですから、何が何でもString型ではなく、質問の格納データが文字列なので、型をそれに合わせただけです

投稿日時 - 2006-03-10 14:43:59

お礼

領域を気にしなくても良いというのは嬉しいですね。
そうでしたか・・・、もっと状況を解るようにがんばって勉強します。
大変参考になりました。
お返事ありがとうございます。嬉しかったです。

投稿日時 - 2006-03-10 17:19:40

ANo.4

>javaは計算するとき以外は入れ替える(文字として表示するだけ)でしたら必要ないって思ってたのですが、やっぱり数字はInteger.parseIntしないとまずかったのでしょうか??
元のソースで
>int kingaku[];
>kingaku = new int[5];
となっていたためにint に変換しています。
単に文字列として扱うには、おっしゃるとおり変換する必要はありません。

投稿日時 - 2006-03-10 13:12:06

お礼

そうでしたか・・。
高い技術力を持ちながら私にも解るような説明いつもありがとうございます。
この度も先着順でポイント発行させていただきます。
本当にありがとうございました。

投稿日時 - 2006-03-10 17:16:27

ANo.3

char の配列と String の扱いで混同されている点があるように見えますが・・・。

Java の場合 String は String であって char 配列ではありません。C言語とはこの辺の扱いがかなり違っています。(詳細は入門書を読んで下さい)。

投稿日時 - 2006-03-10 03:24:28

お礼

おっしゃられる通りみたいです・・。
入力も配列と配列じゃないときとは違うようですね・・。
もっともっとがんばりますです。
大切なお時間ありがとうござしました。
お返事いただけてうれしかったです。

投稿日時 - 2006-03-10 12:51:08

ANo.2

import java.io.*;
class Sample3{
public static void main(String args[])throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int meny;
int max = 0;
int kingaku[]= new int[5];
String ss[] = new String[5];
do{
System.out.println("1:入力とその長さ");
System.out.println("2:データ入力");
System.out.println("3:データ表示");
System.out.println("4:おしまい");
String hako = br.readLine();
meny = Integer.parseInt(hako);
switch(meny){
case 1:
System.out.println("文字を入力してください。");
String input = br.readLine();
System.out.println(input + "は" + input.length() + "文字です。");
break;

case 2:
if (max == 5){
System.out.println("これ以上登録できません");
} else {
System.out.println("名前を入力してください。");
ss[max] = br.readLine();
System.out.println("金額を入力してください。");
kingaku[max] = Integer.parseInt(br.readLine());
System.out.println(ss[max] + "さんで" + kingaku[max] + "を登録します。");
max++;
}
break;

case 3:
if (max == 0){
System.out.println("登録をしてからお選びください。");
}else{
System.out.println("現在登録人数は" + max + "人です。");
for(int aa = 0;aa<max;aa++){
System.out.println("名前:" +ss[aa] + " 金額:" +kingaku[aa]);
}
}
break;
}
}while(meny != 4);
}
}

投稿日時 - 2006-03-10 02:05:53

お礼

いつもお返事いただけてありがとうございます。
case 2のところ・・私ぜんぜん意味わかんない事してましたね・・お恥ずかしいです^^;
Stringについてお聞きしたいところがあったので、ポイント発行はもう少しお待ちください。
kingaku[max] = Integer.parseInt(br.readLine());←これ
これなのですが、javaは計算するとき以外は入れ替える(文字として表示するだけ)でしたら必要ないって思ってたのですが、やっぱり数字はInteger.parseIntしないとまずかったのでしょうか??
また、String xxx = br.readLine()というのを覚えたのですが、配列の場合以外ではこうするのであるって意味でしょうか??
お返事いただけたら嬉しいです。

投稿日時 - 2006-03-10 12:47:11