人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaでfor文を書き換えて出力を変更する

こんにちは、Javaについて質問です。
https://gist.github.com/AuroraNorthernQuarter/196c7a8fb85fe967f5a5ecacf6a5d50e
に、コードがあります。
現状、コードを実行して得点を入れると、

------------------
得点を入力してください: 76
もう少し頑張りましょう。
橋本:166.3cm
高杉:159.1cm
佐藤:177.4cm
・・・
------------------

のような結果が返されると思います。
この結果が出てくるのは、

for (int i = 0; i <= 2; i++) {
System.out.println(name[i] + ":" + height[i] + "cm");
sum = sum + height[i];

と、for文で定義されているからだと思いますが。
このfor文を書き換えて、

------------------
得点を入力してください: 76
もう少し頑張りましょう。
橋本:
高杉:159.1cm
佐藤:177.4cm
橋本:166.3cm
高杉:
佐藤:177.4cm
橋本:166.3cm
高杉:159.1cm
佐藤:
・・・
------------------

のような出力結果は出せないでしょうか。
for文に出てくる変数が、今は"i"だけですが、2つになっても構いません。
よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 犬猫ハーフ
●200ポイント

「最初の三行は一人目の身長を出力しない、次は二人目・三人目と順に…」という事でよろしいでしょうか?
for文を二重にすればできそうです。

for (int i = 0; i <= 2; i++) {

for (int j = 0; j <= 2; j++) {

System.out.println(name[i] + ":" + ( ( i != j ) ? height[i] : "" ) + "cm");

}
sum = sum + height[i];

}


犬猫ハーフさんのコメント
すいません、しょうもないバグがありました。下記が訂正です。 誤:System.out.println(name[i] + ":" + ( ( i != j ) ? height[i] : "" ) + "cm"); 正:System.out.println(name[i] + ":" + ( ( i != j ) ? (height[i] + "cm") : "" ));

moon-fonduさんのコメント
すみません、お教えいただきましたコードを貼り付けたのですが。 エラーになったので、またいろいろ書き換えておりますと。 こんな感じのコード https://gist.github.com/AuroraNorthernQuarter/2009ed72ff12b482820a5a629560f0f9 になってしまい、希望の結果は出ずに、 ―――――――――― 得点を入力してください: 76 もう少し頑張りましょう。 橋本: 橋本:166.3cm 橋本:166.3cm 平均:166.3 ―――――――――― のような出力になってしまいました…。 上記リンク先の状態から、for文を変えて、 ------------------ 得点を入力してください: 76 もう少し頑張りましょう。 橋本: 高杉:159.1cm 佐藤:177.4cm 橋本:166.3cm 高杉: 佐藤:177.4cm 橋本:166.3cm 高杉:159.1cm 佐藤: ・・・ ------------------ を出すには、どうすればよいでしょうか? よろしくお願いい致します<m(__)m>

犬猫ハーフさんのコメント
「エラーになった」とのことですが、具体的にどのようなエラーでしょうか? (コンパイル時エラー OR 実行時エラー、出力されたエラーメッセージなど。) また、もう一点バグがあったので修正です。 System.out.println(name[j] + ":" + ( ( i != j ) ? (height[j] + "cm") : "" )); 私の手元の環境では、これで正常に動作しました。

moon-fonduさんのコメント
ありがとうございます、うまくいきました!

2 ● rsc
●400ポイント ベストアンサー

こちらは参考になるでしょうか。前回のを雛形にしました。

package testprogramm;

import java.util.Scanner; 

public class Sample { 

 static void Disp(String[] name, double[] height){
 int n = name.length;
 double sum = 0;
 for (int i = 0; i < n; i++) { 
 for (int j = 0; j < n; j++){
 System.out.println( name[j] + ":" + ((i==j)? "" : height[j] + "cm") ); 
 }
 sum = sum + height[i];
 }
 System.out.println("平均:" + sum/n+ "cm");
 }
 
 public static void main(String args[]) {

 Scanner scan = new Scanner(System.in); 

 while (true) { 
 System.out.print("得点を入力してください: "); 
 // キーボードから整数の入力を受け取る 
 int score = scan.nextInt(); 

 if (score > 90) { 
 System.out.println("おめでとう! 合格です"); 
 String name[] = new String[3]; 
 double height[] = new double[3]; 
 double sum = 0; 
 name[0] = "鈴木"; 
 name[1] = "杉山"; 
 name[2] = "田中"; 
 height[0] = 168.7; 
 height[1] = 173.4; 
 height[2] = 155.8; 
 Disp(name,height); 
 break; 
 } else if (score >= 60) { 
 System.out.println("もう少し頑張りましょう。"); 
 String name[] = new String[3]; 
 double height[] = new double[3]; 
 double sum = 0; 
 name[0] = "橋本"; 
 name[1] = "高杉"; 
 name[2] = "佐藤"; 
 height[0] = 166.3; 
 height[1] = 159.1; 
 height[2] = 177.4; 
 Disp(name,height);
 break; 
 } else if (score < 0) { 
 break; 
 } 
 }
 scan.close(); 
 }
}

moon-fonduさんのコメント
ありがとうございます。追加の質問で恐縮なのですが。 for文を書き変えて、 ------------------ 得点を入力してください: 76 もう少し頑張りましょう。 橋本 159.1cm 177.4cm 高杉 166.3cm 177.4cm 佐藤 166.3cm 159.1cm ・・・ ------------------ のように、自分の名前プラス自分以外の2名の身長を出すことはできないでしょうか? 度々すみません、よろしくお願い致します<m(__)m>

rscさんのコメント
Disp()のとこだけ次のように書き換えるのはどうでしょうか。 >|Java| static void Disp(String[] name, double[] height){ int n = name.length; double sum = 0; for (int i = 0; i < n; i++) { System.out.println(name[i]); for (int j = 0; j < n; j++){ if (i==j) continue; System.out.println(height[j] + "cm"); } sum = sum + height[i]; } System.out.println("平均:" + sum/n+ "cm"); } ||<

moon-fonduさんのコメント
ありがとうございます!うまくいきました(^^;)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ