2013-03-20 63 views
-2

編寫一個應用程序,提示用戶輸入全名和街道地址,並根據用戶姓名的首字母和數字部分構造一個ID。例如,居住在34 Elm的用戶William Henry Harrison將具有WHH34的ID,而住在1778門羅的用戶Addison Mitchell將具有AM1778的ID。將該文件保存爲ConstructID.java。如何使用循環獲取全名字符串的第一個字母?

這是迄今爲止,W/C我的老師說,它的錯......

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); 
    } 
} 

注:我不能使用數組 :(這個問題的話題是關於循環和字符串..沒有陣列..所以請幫助.. :((

+2

你嘗試運行代碼,並檢查是否按預期工作的? – Apurv 2013-03-20 03:34:25

+1

「if」陳述應該做什麼?如果你用英文寫出你的邏輯,它可能會讓你(和我們)知道代碼應該是什麼樣子。 – 2013-03-20 03:34:41

+3

1)*「我的老師說錯了」*它有什麼問題? 2)*「我不能使用陣列」*不要向我們傾訴!這不是我們的錯。 – 2013-03-20 03:34:51

回答

-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); 

    } 
+0

我的意思是,如果你可以解釋downvotes這將是可怕的,這段代碼的作品.... – MorningDew 2013-03-20 04:08:47

+0

先生...謝謝!雖然有一件事丟失了...輸出的字母不是大寫..但是謝謝! :)我想我可以從這裏處理它.. Godbless! – 2013-03-20 04:14:45

+0

我不是downvoter,但我肯定downvote你不幫助學習者,ü** **學習**而不是給出一個完整的答案= \\ – 2013-03-20 04:16:33

1

如果你不能使用數組,請使用列表。查看javadocsjava.util.List以瞭解列表可以做什麼。講座筆記!)

我期望這個理由你的老師說過你寫的是錯的是它假設爲大家的名字由名字,中間名和姓氏組成。我相信你知道這是不正確的。有些人有許多中間名,或根本沒有。的確,有些人只有一個名字。

你的老師想要的是能夠應對任意名字的代碼。一個數組將是一個不好的選擇...因爲你需要預測在之前你從數組中讀取數組的大小,這個數組是

+0

true :(你可以請幫助我如何使全名只有一個字符串,並將其循環以獲得名稱每個部分的第一個字母?:( – 2013-03-20 03:58:46

+1

我不打算爲您編寫代碼。實際上是自己寫的......從頭開始。讀別人的代碼不會教你如何編寫自己的代碼。 – 2013-03-20 06:04:54

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); 
+0

謝謝!驚人!就是這個! :))) 上帝祝福你! – 2013-03-20 04:10:29

+2

謝謝,現在OP不能自己學習。 – 2013-03-20 04:15:07

+0

我還不知道,如果我不會理解所有的代碼先生。 pravat給了..現在它的我的一部分了解上面的所有代碼...我仍然可以學習..現在更容易.. :)謝謝! – 2013-03-20 04:30:44

相關問題