编写程序,允许用户在键盘上输入姓名,程序输出欢迎信息。

程序的运行结果如下:

用不同的输入测试程序,

问题:

  1. 不输入任何字符,直接按ENTER 键会有什么结果。
  2. java.util.Scanner, 这个类用于读取从键盘上输入的值,获取从键盘上输入的字符串、整数等分别用什么方法。
  3. String取得长度的方法,取得子串的方法。

代码:

import java.util.Scanner;public class Print_name {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入姓名:");String name = scan.next(); System.out.println("你好,"+name+"!");System.out.println("你姓:"+name.substring(0,1)+"!");System.out.println("你的名字:"+name.substring(1,name.length())+"!");}}

name.substring(0,1) 表示截取name变量的字符串,从0开始截取一个作为子串。

name.length() 表示获取name变量这个字符串的长度。


2018.12.5补充

老师让我们这个实验练习的时候应该是想让我们练习一下字符串的函数。所以我做的时候也没有考虑到复姓的情况。 今天在百度搜索整理了一下,网友提出的大概有以下方法:

  1. 让用户自己分别输入姓和名(最可行的方法)。
  2. 把所有的复姓罗列起来放进个容器(数组)中,即建立完善的复姓字典,然后针对每个姓名比较。
  3. 名字=2 的肯定为单姓,>=4的也肯定为复姓。为3的就难区分了。

其实无论是第二种方法和第三种方法都是会有遗漏的,如父亲的姓和母亲的姓组合成的复姓,如4个字的姓(爱新觉罗),如金城武其实姓金城而不是姓金。

接下来提供一个复姓数组字典的方法,转自https://blog.csdn.net/CodingMouse/article/details/2478867,只能说考虑到了我们平时见得多的复姓。

import java.util.Scanner;public class InputAndOutputName {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//保存我国现存的81个复姓(如果还有人是其他复姓,我估计这人是刚出土的)String[] RepeatedFamilyName = new String[] {"欧阳", "太史", "端木", "上官", "司马", "东方", "独孤", "南宫", "万俟", "闻人", "夏侯","诸葛", "尉迟", "公羊", "赫连", "澹台", "皇甫", "宗政", "濮阳", "公冶", "太叔", "申屠","公孙", "慕容", "仲孙", "钟离", "长孙", "宇文", "司徒", "鲜于", "司空", "闾丘", "子车","亓官", "司寇", "巫马", "公西", "颛孙", "壤驷", "公良", "漆雕", "乐正", "宰父", "谷梁","拓跋", "夹谷", "轩辕", "令狐", "段干", "百里", "呼延", "东郭", "南门", "羊舌", "微生","公户", "公玉", "公仪", "梁丘", "公仲", "公上", "公门", "公山", "公坚", "左丘", "公伯","西门", "公祖", "第五", "公乘", "贯丘", "公皙", "南荣", "东里", "东宫", "仲长", "子书","子桑", "即墨", "达奚", "褚师"};//System.out.println("我国现存复姓数量为:" + RepeatedFamilyName.length + "个。");//保存全名String fullName;//保存姓氏String familyName = "";//保存名字String firstName = "";//循环标识boolean con;do {con = false;//控制台输入提示System.out.print("输入任意一个姓名:");//接收并保存全名fullName = sc.next();//保存输入内容的前两个字符String frontTwoChar = fullName.substring(0, 2);//处理复姓for (int i = 0; i < RepeatedFamilyName.length; i++) {if (RepeatedFamilyName[i].equals(frontTwoChar)) {if ((fullName.length() <= 2) && //姓氏不为“欧阳”,且完整姓名小于等于两个字符的!frontTwoChar.equals("欧阳")) {System.out.println("错误,请输入完整姓名!");con = true;} else if ((fullName.length() > 2) && //姓氏不为“欧阳”,且完整姓名大于两个字符的!frontTwoChar.equals("欧阳")) {familyName = fullName.substring(0, 2);firstName = fullName.substring(2);} else if ((fullName.length() <= 2) && //姓氏是“欧阳”,且完整姓名小于等于两个字符的frontTwoChar.equals("欧阳")) {familyName = fullName.substring(0, 1);firstName = fullName.substring(1);} else if ((fullName.length() > 2) && //姓氏是“欧阳”,且完整姓名大于两个字符的frontTwoChar.equals("欧阳")) {familyName = fullName.substring(0, 2);firstName = fullName.substring(2);}//找到相匹配的复姓就跳出循环,停止判断break;} else {familyName = fullName.substring(0, 1);firstName = fullName.substring(1);}}//控制台分别输出姓和名System.out.println("姓氏:" + familyName);System.out.println("名字:" + firstName);//询问用户是否中止程序System.out.print("是否继续(y/n)?");char choose = sc.next().charAt(0);if ((choose == 'y') || (choose == 'Y')) {con = true;}} while (con);//退出System.exit(0);sc.close();}
}

输入姓名,程序输出欢迎信息。用 substring() 和 length() 获得名字的子串和长度分别输出姓和名字。相关推荐

  1. PYthon作业通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成。 编写程序,完成以下功能: 输入姓名,若通讯录文件中存在,则讲该联系人信息输出;

    """通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成.编写程序,完成以下功能:输入姓名,若通讯录文件中存在,则讲该联系人信息输出:若不存在,则输出 ...

  2. 2、采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超30年的职工加1000元工资,并输出工资变化后的所有职工的信息

    2.采用结构体数组编写程序,定义一个含职工姓名.工作年限.工资总额的结构体类型,从键盘输入5名职工的信息,最后再对工作年限超过30年的职工加1000元工资,并输出工资变化后的所有职工的信息(要求用下标 ...

  3. python输入学号姓名输出自我介绍_请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生信息。_学小易找答案...

    [单选题]维持人体直立姿势的重要肌 [选择题]2. 对尿失禁患者的护理中错误的一项是( ) [简答题]你印象最深的一处旅游景点是哪里?给你印象深刻的地方在于?有我们的民俗文化元素吗? [判断题]中间继 ...

  4. C++ 第一章 NO.11 编写一个程序模拟支票输出。程序要求用户输入日期,姓名和支票的数量,然后模拟支票的形式输出以下信息,

    //******************************************************************************************** //*程序 ...

  5. 学生的基本信息包括学号、姓名、成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息。

    学生的基本信息包括学号.姓名.成绩, 写出表示学生数据的结构类型,编写一个程序,输入整数n,再输入n个学生的信息,输出成绩最高的学生信息. 代码如下: #include<stdio.h>s ...

  6. 请编写一个程序,使用字典存储学生信息,学生信息包含学号和姓名,请根据学生学号从小到大输出学生信息

    请编写一个程序,使用字典存储学生信息,学生信息包含学号和姓名,请根据学生学号从小到大输出学生信息 目录 列表输出 这一题就可以借助于字典的推导式 通过字典输出的另一种方法 第一种方法 列表输出 dic ...

  7. 请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大的顺序输出学生信息。

    请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大的顺序输出学生信息. 代码如下: dic = {} number = int(input("请输入学生的人 ...

  8. 输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

    输入n个朋友的信息,包括姓名.生日.电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录.题目保证所有人的生日均不相同. 输入格式: 输入第一行给出正整数n(<10).随后n行,每行 ...

  9. 7-1 输入学生姓名,输出问候信息。

    输入学生姓名name,输出问候信息"Hello,name". 输入格式: 在一行中给出学生姓名 name. 输出格式: 在一行中输出:Hello,name! 输入样例: 在这里给出 ...

最新文章

  1. mysql c where_mysql where条件语句优化笔记
  2. 兰州谋定百合品牌-农业大健康·万祥军:功能性农业产业脱贫
  3. LeetCode Combination Sum
  4. 协方差公式性质证明过程_论文推荐 | 刘志平:等价条件平差模型的方差-协方差分量最小二乘估计方法...
  5. [0].Net开发者社区--您好大的官威啊!
  6. 房地产税迟早要来,而且会带来房价小涨。
  7. 用for循环打印出九九乘法表
  8. python机器学习库xgboost——xgboost算法
  9. 基于VB.net的电子邮件收发软件设计
  10. 番茄花园GhostXP sp3快速装机版2012.03
  11. 高中信息技术python教材内容_高中信息技术教材 掌控基础版
  12. flash游戏开发学习
  13. 第八章:Java8新增特性,Lambda表达式
  14. SQLServer -ServiceBroker
  15. 什么是RC版本(转载)
  16. texlive+texstudio数学建模排版
  17. 酒店订房管理系统2.0 优化版
  18. 力扣417题太平洋大西洋水流问题
  19. 摩拜路演竟然都在用他做的PPT,这位骨灰级大神到底有什么秘诀?
  20. 电商订单中心业务梳理

热门文章

  1. IDEA出现Connected to server错误,是怎么回事?
  2. G001-185-8
  3. android 打印机 api,【报Bug】蓝牙打印API写入中文乱码(包括安卓、IOS)
  4. h5 添加网页背景动画效果,跟随鼠标移动的线条
  5. Rundeck部署和基本使用
  6. java连接sqlite数据库 相对路径怎么写_配置sqlite的相对路径
  7. Name or service not known异常处理方法总结
  8. 启动一个X Server
  9. 免费ssl证书申请以及nginx配置https访问攻略
  10. 图灵奖得主Joseph Sifakis开讲,首场AI TIME Master大师讲坛完美收官