2013-03-20 123 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

相关问题