0

ギフトレジストリにエントリを作成するプログラムを作成することになっています。ユーザーは、希望するギフトアイテムと、これを購入できる店舗を入力できます。ユーザーが新しいアイテムの入力をやめたいと表明すると、すべてのギフトアイテムとストアの概要が表示されます。

Below is a sample output
 Do you wish to make a gift registry list? (y/n): y
 Enter item: watch
 Enter store: Swatch
 Any more items? (y/n): y
 Enter item: ballpen
 Enter store: National Bookstore
 Any more items? (y/n): n

Gift Registry:
watch - Swatch
ballpen - National Boo

私が間違っていなければ、このプログラムでは配列を使用することになっていますよね? カウンター (ユーザーが入力した回数) に依存する配列の長さを持つことは可能ですか?

これまでのところ、これらは私のコードです:

package arrays;
import java.util.*;
import java.util.List;
import java.util.ArrayList;

public class GiftRegistry 
{
    public static void main (String[] args)
    {
        Scanner input = new Scanner(System.in);

        String choice;

        // Declare array num
        ArrayList<String> items = new ArrayList<String>();
        ArrayList<String> stores = new ArrayList<String>();

        items.add(items);
        stores.add(stores);


        System.out.print("Do you wish to make a gift registry list? (y/n):");
        choice = input.nextLine();

        while (choice.charAt(0) != 'n')
        {
            System.out.print("Enter item: ");
            items.add(items) = input.nextInt();

            System.out.print("Enter store: ");
            stores.add(stores) = input.nextInt();


            System.out.print("Any more items? (y/n):");
            choice = input.nextLine();
        }

        System.out.println("Gift regisrty: ");



        }
 }

私は本当に方法を知りません

4

4 に答える 4

1

1) 「watch」と「Swatch」を として挿入することはできませんint

2) a の方が優れているのにArrays、なぜ を使用するのListですか?

編集:

java.util.List: インターフェイス。

java.util.ArrayList: あなたのケースに最適な実装です。

使用法:

List<String> list = new ArrayList<String>();
list.add("myFirstString");
list.add("mySecondString");

for each ループで読み取る場合:

for (String currentValue : list)
   System.out.println(currentValue);
于 2012-12-05T21:54:27.887 に答える
0

配列を使用する必要があるという考えは正しいです - ただし、Java の標準の配列型は動的にサイズ変更されません - つまり、次のようになります。

  int[] item = new int[ctr+1];
  int[] store = new int[ctr+1];

サイズ1の配列オブジェクトへの参照を作成しています。しかし、呼び出すと

ctr++;

配列のサイズには影響しません-整数 ctr に関連付けられている値に影響を与えています。これは、新しい配列を初期化するために使用する場合、自動的に配列に関連付けられません。

プリミティブ配列を引き続き使用したい場合は、希望するギフトの数が配列のサイズよりも大きい場合に、新しいものを作成する必要があります。ちなみに、アイテムを文字列として保存する必要があります。

//If the array 'item' is full....
String [] oldItemArray = item;

//You can increase by 1 or more, to add more empty slots
String [] newItemArray = new String[oldItemArray.length + 1]; 
for (int i = 0; i < newItemArray.length; i++){
//...Put each item from the old array into the new one.
}
item = newItemArray;

Java には、これらの状況に対応するためのデータ構造のタイプが含まれています。これは非常に一般的であるため、割り当てられたメモリ量がいっぱいになると動的にサイズ変更される ArrayList であり、それを使用することを強くお勧めします。

ArrayList<String> items = new ArrayList<String>();
ArrayList<String> stores = new ArrayList<String>();
...
...
items.add(enteredItem);
stores.add(storedItem);

コードには他にもいくつかの小さな問題があります。それらについても質問している場合です。ただし、これがコードの主な問題です。

于 2012-12-05T22:01:43.723 に答える
0

配列の長さは固定されているため、無限の長さの性質上、配列を使用することはできません。リストを使用する必要があり、あなたの場合はArrayListを使用する必要があります。

http://docs.oracle.com/javase/6/docs/api/java/util/List.htmlリストのドキュメント http://docs.oracle.com/javase/6/docs/api/java/util/ arraylist のArrayList.htmlドキュメント

于 2012-12-05T21:54:19.380 に答える
0

サイズが動的かつ自動的に調整される ArrayList を使用できます。

于 2012-12-05T21:56:22.213 に答える