0

誰でも私を助けることができますか?私たちのインストラクターは、私たちのプログラムでは配列リストを使いたくないと言っていました。配列のみ、for ループ、および do while のみ。プログラムは購入プログラムです。(アイテムを追加し、トランザクションを記録します。) これは私が理解したい最初のステップです。

このプログラムでは、表示項目コードと説明を適切に行いたいと考えています。たとえば、code=123 と descrip= はい。出力が表示されますが、Item code = 123, Item descrpition = yeah.「はい」と言って別のコード例を入力すると、コード例 = 456 および説明 = ああ。出力Item code = 123456, Item description = yeah.oh.

import java.util.Scanner;

public class Apps {

    public static void main(String[] args) {

        Scanner a = new Scanner(System.in);
        String code = "", des = "", ans;
        String[] b = new String[1];
        String[] aw = new String[1];
        int x;

        do {

            System.out.print("Item code:");
            code += "" + a.next();

            System.out.print("des:");
            des += "" + a.next();

            System.out.println("yes or no:");
            ans = a.next();

        }

        while (ans.equals("yes"));

        for (x = 0; x < 1; x++) {
            b[x] = code;
            aw[x] = des;

            System.out.println("Item code:" + b[x]);
            System.out.println("Item description:" + aw[x]);

        }

    }

}
4

4 に答える 4

2

このコードは、任意の数のアイテムに使用できます。データを文字列に保存し、ユーザーが「いいえ」を選択すると文字列を分割します。

public static void main(String[] args) {
    Scanner a = new Scanner(System.in);
    String ans;
    String itemCounts = "";
    String descriptions = "";

    do {
        System.out.print("Item code:");
        itemCounts += "" + a.next() + "\n";

        System.out.print("des:");
        descriptions += "" + a.next() + "\n";

        System.out.println("yes or no:");
        ans = a.next();
    } while (ans.equals("yes"));

    String[] b = itemCounts.split("\n");
    String[] aw = descriptions.split("\n");

    for (int i = 0; i < b.length; i++) {
        System.out.println("Item code:" + b[i]);
        System.out.println("Item description:" + aw[i]);
    }
}
于 2013-10-10T13:27:44.173 に答える
0

これは例えば動作します:

public static void main(String[] args) {

    Scanner a = new Scanner(System.in);
    String ans;
    int capacity = 100;
    String[] b = new String[capacity];
    String[] aw = new String[capacity];
    int itemCount = 0;
    int x;

    do {           
        System.out.print("Item code:");
        b[itemCount] =  a.next();

        System.out.print("des:");
        aw[itemCount] = a.next();

        System.out.println("yes or no:");
        ans = a.next();
         itemCount++;
    } while (ans.equals("yes"));

    for (x = 0; x < itemCount; x++) {
        System.out.println("Item code:" + b[x]);
        System.out.println("Item description:" + aw[x]);
    }
}

そのユーザーが「無限」の数のアイテムを追加できることを確認したい場合は、itemCount が配列の容量よりも小さいかどうかを手動で確認する必要があり、到達したら、より大きな容量の新しい配列を割り当てて値をコピーする必要があります。それに。

于 2013-10-10T13:14:47.723 に答える
0

next() は行末を処理しないnext()ので、もう一度呼び出すときは、\n前に入力したエンター ( ) を入力として受け取ります。

nextLine()それぞれの後に呼び出す必要がありますnext()(したがって\n、前のものから飲み込みます)。

于 2013-10-10T13:07:41.870 に答える
0

次のようなコレクションを使用してこれを実現できます。

import java.util.ArrayList;
import java.util.Scanner;

public class Apps
{

    public static void main(String[] args)
    {

    Scanner a = new Scanner(System.in);
    String ans;

    ArrayList<String> br = new ArrayList<String>();
    ArrayList<String> ar = new ArrayList<String>();

    do
    {
        System.out.print("Item code:");
        br.add(a.next());

        System.out.print("des:");
        ar.add(a.next());

        System.out.println("yes or no:");
        ans = a.next();

    }

    while (ans.equals("yes"));

    for (int i = 0; i < br.size(); i++)
    {
        System.out.println("Item code:" + br.get(i));
        System.out.println("Item description:" + ar.get(i));
    }

    }

}

しかし、配列で達成できるかどうか、または

public static void main(String[] args)
{

Scanner a = new Scanner(System.in);
    String code = "", des = "", ans;
    int capacity = 100;
    String[] b = new String[Integer.MAX_VALUE];
    String[] aw = new String[Integer.MAX_VALUE];
    int itemCount = 0;
    int x;

    do {           
        System.out.print("Item code:");
        b[itemCount] =  a.next();

        System.out.print("des:");
        aw[itemCount] = a.next();

        System.out.println("yes or no:");
        ans = a.next();
         itemCount++;
    } while (ans.equals("yes"));

    for (x = 0; x < itemCount; x++) {
        System.out.println("Item code:" + b[x]);
        System.out.println("Item description:" + aw[x]);
    }

}

Interger.MAX_VALUE はこれを実行できる回数ですが、コンパイル時に配列サイズを定義する必要があるため、無限ではありません。

于 2013-10-10T13:21:20.947 に答える