-2

ユーザーに氏名と住所の入力を求めるアプリケーションを作成し、ユーザーのイニシャルと住所の数値部分からIDを作成します。たとえば、34Elmに住んでいるユーザーWilliamHenry HarrisonのIDはWHH34ですが、1778Monroeに住んでいるユーザーAddisonMitchellのIDはAM1778になります。ファイルをConstructID.javaとして保存します。

これはこれまでのところ、私の先生が間違っていると言っています...

import java.util.*;
public class ConstructID {

    public static void main(String[] args) {

        String name1, address1, address2;

        Scanner kevs = new Scanner(System.in);

        System.out.println("Enter your fullname. Encluding Middle Initial, Separated by spaces.");

        name1 = kevs.next();
        name2 = kevs.next();
        name3 = kevs.next();

        name1 = name1.toUpperCase();
        name2 = name2.toUpperCase();
        name3 = name3.toUpperCase();

        name1 = name1.substring(0,1);
        name2 = name2.substring(0,1);
        name3 = name3.substring(0,1);

        System.out.println("\nEnter your address. Separated by spaces.");

        address1 = kevs.next();
        address2 = kevs.nextLine();


        do {

            if (address1 == address1.substring(0,1) || address1 == address1.substring(0,2) || address1 == address1.substring(0,3) || address1 == address1.substring(0,4) || address1 == address1.substring(0,5) || address1 == address1.substring(0,6))
            System.out.println("\nYour ID: " + name1 + name2 + name3 + address1);

        } while (address1 == address2);
    }
}

注:配列を使用することはできません:(この質問のトピックはすべてループと文字列に関するものです..配列はありません..助けてください..:((

4

3 に答える 3

1

配列を使用できない場合は、リストを使用します。リストで何ができるかを理解するには、javadocsを参照してください。java.util.List(またはあなたの講義ノート!)

あなたの書いたものが間違っていると先生が言ったのは、すべての人の名前がファーストネーム、ミドルネーム、ラストネームで構成されていると想定しているからだと思います。これが正しくないことはご存じだと思います。ミドルネームをたくさん持っている人もいれば、まったく持っていない人もいます。実際、名前が 1 つしかない人もいます。

教師が必要としているのは、任意の数の名前に対応できるコードです。配列はそのための悪い選択です...ユーザーから名前を読み取る前に、配列の大きさを予測する必要があるためです。

于 2013-03-20T03:44:10.130 に答える
0
    String name1, address1;

    Scanner kevs = new Scanner(System.in);

    System.out.println("Enter your fullname. Encluding Middle Initial, Separated by spaces.\n");
    name1 = kevs.nextLine();
    name1 = name1.toUpperCase();
    StringTokenizer tokens = new StringTokenizer(name1);
    String name = "";
    while(tokens.hasMoreTokens()) {
        String value= tokens.nextToken();
        name += value.substring(0,1);
    }
    System.out.println("\nEnter your  full address. Separated by spaces.\n");
    address1 = kevs.nextLine();
    address1 = address1.toUpperCase();
    StringTokenizer tokens2 = new StringTokenizer(address1);
    Integer numericAddress = null;
    while(tokens2.hasMoreTokens()) {
        String value1= tokens2.nextToken();
        try {
            numericAddress = Integer.valueOf(value1);
        }catch(NumberFormatException ne) {
            continue;
        }
        break;
    }

    String output = name+numericAddress.toString();

    System.out.println(output);
于 2013-03-20T03:57:55.150 に答える
-1
 public static void main(String[] args) {

        String name, address;

        Scanner kevs = new Scanner(System.in);

        System.out.println("Enter your fullname. Including Middle Initial, Separated by spaces.");

        //get the full name
        name = kevs.nextLine();

        System.out.println("\nEnter your address. Separated by spaces.");
        //get the address
        address = kevs.nextLine();

        String initials = "";
        //get the first letter of the name and add it to our initial string
        char c = name.charAt(0);
        initials += c;
        for (int i = 0; i < name.length(); i++) {
            char letter = name.charAt(i);
            // if we find a space, select the first letter after it until the end
            if (letter == ' ') {
                initials += name.charAt(i + 1);
            }

        }
        String addressNum = "";
        //this bool is so that we only select characters up to the first space
        boolean finished = false;
        for (int i = 0; i < address.length(); i++) {
            if (!finished) {
                char num = address.charAt(i);
                if (num != ' ') {
                    //add characters to the address string until there is a space
                    addressNum += num;
                } else // we found the first space so we are now finished
                {
                    finished = true;
                }
            } else //we are finished so leave the loop
            {
                break;
            }
        }
        //concatenate the strings
        System.out.println(initials + addressNum);

    }
于 2013-03-20T04:04:22.153 に答える