题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 
1.程序分析:利用while语句,条件为输入的字符不为'\n'.

一个很简单的问题,其实换种方式就能完成,但是我就想怎么着才能在while()判断 输入的字符是否为'\n'。(*^▽^*)

 /**
*
*/
package Training; import java.util.Scanner; /**
* @author Administrator
*
*/
public class putIn6 { /**
* @param args
*/
public static void main(String[] args) {
int charnum=0,othnum=0,spacenum=0,dnum=0;
System.out.println("单独输入回车,结束输入:");
@SuppressWarnings("resource")
Scanner scanner=new Scanner(System.in);
String str1=scanner.next();
char str=str1.charAt(0);
// char [] arr =str.toCharArray();
// int length=arr.length;
// int i=0;
while((char str =scanner.next().charAt(0)!='\n')) {
// if(arr[i]=='\n')
// break;
//判断是否是字母
if(Character.isLetter(str))
charnum++;
//判断是否是数字
else if(Character.isDigit(str))
dnum++;
//判断是否是空格
else if(Character.isWhitespace(str))
spacenum++;
//判断是否是其他
else
othnum++;
@SuppressWarnings("resource")
Scanner scanner1=new Scanner(System.in);
String str11=scanner1.next();
char str2=str11.charAt(0);
str=str2;
// if(i<length)
// i++;
}
System.out.println("字母数:"+charnum+" 数字数:"+dnum+" 空格数:"+spacenum+" 其他数:"+othnum);
} }

思考很久后依旧无法解决,在使用while的情况下,实现 以下的效果

2'\n'

3'\n'

w'\n'

'\n'

字母数:1 数字数:2 空格数:0 其他数:0

 

 /**
*
*/
package Training; import java.util.Scanner; /**
* @author Administrator
*
*/
public class putIn6 { /**
* @param args
*/
public static void main(String[] args) {
int charnum=0,othnum=0,spacenum=0,dnum=0;
System.out.println("回车结束输入:");
@SuppressWarnings("resource")
Scanner scanner=new Scanner(System.in);
String str=scanner.next();
// char str=str1.charAt(0);
char [] arr =str.toCharArray();
int length=arr.length;
int i=0;
while(i<length) {
if(arr[i]=='\n')
break;
//判断是否是字母
if(Character.isLetter(arr[i]))
charnum++;
//判断是否是数字
else if(Character.isDigit(arr[i]))
dnum++;
//判断是否是空格
else if(Character.isWhitespace( arr[i]))
spacenum++;
//判断是否是其他
else
othnum++;
// @SuppressWarnings("resource")
// Scanner scanner1=new Scanner(System.in);
// String str11=scanner1.next();
// char str2=str11.charAt(0);
// str=str2;
if(i<length)
i++;
}
System.out.println("字母数:"+charnum+" 数字数:"+dnum+" 空格数:"+spacenum+" 其他数:"+othnum);
} }

只能实现以下效果

回车结束输入:
asdas 2626 asd as
字母数:5 数字数:0 空格数:0 其他数:0

思考加询问过后,得出以下结论

1. java和c的字符串不一样,c中'\n'会是字符串中的最后一部分,而java把'\n'当成一个结束输入的标志,不存在字符串中。 

 所以我试了很多次后,大部分的错误都是while循环到最后数组下标越界。

不知道那个大神能写出来第一种的效果。

                      

利用while语句,条件为输入的字符不为'\n'.的更多相关文章

  1. 如何利用while语句根据用户输入要求打印菱形图案

    需求:如何利用while语句根据用户输入要求打印菱形图案 diamond.py代码如下: x=int(input('Please input number: ')) i=1 j=1 while i&l ...

  2. C++入门经典-例3.12-使用if-else语句实现根据输入的字符输出字符串

    1:代码如下: // 3.12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  3. python学习:利用循环语句完善输入设置

    利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): ...

  4. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  5. c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏

    getch().getche()和getchar()函数     (1) getch()和getche()函数     这两个函数都是从键盘上读入一个字符.其调用格式为:      getch(); ...

  6. 利用switch语句计算特定的年份的月份共有几天。

    //利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 = ...

  7. Java中如何输入一个字符

    今天在QQ群上看见有人问如何在Java中输入一个字符的问题. 查了下有以下三种方法吧: char c = new java.util.Scanner(System.in).next().charAt( ...

  8. c语言int类型的变量输入一个字符出错

    今天遇到一个C语言的小问题,就是写一个简单的计算器,定义一个%f%c%f的三个变量,作2+3,2-3这种可以不断输入并输入“OFF”跳出循环的计算器功能,便会出现错误: 错误的示例代码如下: #inc ...

  9. javascript语句——条件语句、循环语句和跳转语句

    × 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...

随机推荐

  1. 为什么alertView弹出后button会消失的问题

    按option后会有提示:Do not use the label object to set the text color or the shadow color. Instead, use the ...

  2. 浅谈linux虚拟内存结构

    一个虚拟存储器系统要求硬件和软件之间紧密写作(mmu(内存管理单元,虚拟地址到物理地址的翻译),TLB块表(虚拟地址到物理地址index,虚拟寻址),l1,l2,l3高速缓存(物理单元数据)物理寻址) ...

  3. java中的左右移

    package scanner; public class LeftMove { public static void main(String[] args) { int i = 1; System. ...

  4. CentOS7.3 ARM虚拟机扩容系统磁盘

    由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数据丢失等一系列严重的问题,因此建议:在进行虚拟机分区扩容之前,一定要备份重要数据文件,并且先在测试机上验证以下步骤,再应用于您的生产 ...

  5. 自己用的一套reset.css,打算整理一下方便以后用,持续更新中,各位大神,不喜勿喷

    *{margin: 0; padding: 0;border:none;}img{vertical-align: top;width: 100%;border: none;}ul,li{list-st ...

  6. 错误:The request sent by the client was syntactically incorrect的解决

    问题: 错误400-The request sent by the client was syntactically incorrect. springMVC中,某个页面提交时报400错误,如下图. ...

  7. java 常见的几种运行时异常RuntimeException

    常见的几种如下:   NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常.IllegalArgumentException - 传递 ...

  8. 重置CentOS 7的Root密码

    centos7与centos6有很多修改,不一样了,打算写几篇关于日常用到的改动 修改root密码 centos7的用户模式跟6有所不同 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e ...

  9. bat自动打包压缩实现

    1.引言 本文档的编辑目的是为了实bat脚本自动打包功能,包含包的名字命名,压缩文件内外层文件夹的名字:包含svn版本号等: 2.实现介绍 (1)获取svn号,生成批处理文件 写一个pak.bat文件 ...

  10. PowerMockito使用详解

    一.PowerMock概述 现如今比较流行的Mock工具如jMock,EasyMock,Mockito等都有一个共同的缺点:不能mock静态.final.私有方法等.而PowerMock能够完美的弥补 ...