2

この以下のプログラムでは、ユーザーが挿入する都市名の数を入力し、文字列配列がそのサイズで初期化されます。次に、ループを繰り返し、配列のすべてのインデックスをユーザーから挿入された値 (都市名) で初期化しようとします。しかし、配列から値を出力しようとすると、1つ少ない値が要求されます..つまり、都市の数が2であると言う場合、ループを2回繰り返し、値を2回挿入する必要がありますが、代わりに値を挿入します1回だけ。デバッグ時に、0 番目の要素がどこかからそれ自体で初期化されていることに気付きました。正確な問題を見つけることができません。

import java.util.Scanner;


public class EmptyStringGenerator  {
    public static void main(String []ard)  {
        Scanner scanner = new Scanner(System.in);
        System.out.println("How many cities?");

        String[]favoriteCities = new String[scanner.nextInt()];
        for(int i=0;i<favoriteCities.length;i++){
            favoriteCities[i]=scanner.nextLine();

        }

        for(String str:favoriteCities){
            System.out.print(str+" ");
        }

    }
}

私の入力:

2
Delhi

出力:

Delhi
4

4 に答える 4

1

methodnext()の代わりにnextLine()methodを使用します。nextLine()nextLine()new linenextInt()

このスキャナを現在の行を超えて進め、スキップされた入力を返します

次()

このスキャナから次の完全なトークンを見つけて返します

したがって、コードは次のようになります

public static void main(String []ard)  
{
    Scanner scanner = new Scanner(System.in);
    System.out.println("How many cities?");

    String[]favoriteCities = new String[scanner.nextInt()];
    for(int i=0;i<favoriteCities.length;i++)
    {
        favoriteCities[i]=scanner.next();
    }

    for(String str:favoriteCities)
    {
        System.out.print(str+" ");
    }
}
于 2013-09-12T11:25:20.137 に答える
0

OPquestionを正しく理解していれば、入力はintandcity nameであり、出力はnumber of times (int) the city name、たとえば2 DelhioutputDelhi Delhiである必要がありますが、彼は しか取得していませんDelhi

解決

    String[]favoriteCities = new String[scanner.nextInt()];
    String cityToBeAdded = scanner.next();
    for(int i=0;i<favoriteCities.length;i++){
        favoriteCities[i]=cityToBeAdded;

    }

    for(String str:favoriteCities){
        System.out.print(str+" ");
    }
于 2013-09-12T11:38:33.583 に答える