利用while语句,条件为输入的字符不为'\n'.
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
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'.的更多相关文章
- 如何利用while语句根据用户输入要求打印菱形图案
需求:如何利用while语句根据用户输入要求打印菱形图案 diamond.py代码如下: x=int(input('Please input number: ')) i=1 j=1 while i&l ...
- C++入门经典-例3.12-使用if-else语句实现根据输入的字符输出字符串
1:代码如下: // 3.12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- python学习:利用循环语句完善输入设置
利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏
getch().getche()和getchar()函数 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符.其调用格式为: getch(); ...
- 利用switch语句计算特定的年份的月份共有几天。
//利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 = ...
- Java中如何输入一个字符
今天在QQ群上看见有人问如何在Java中输入一个字符的问题. 查了下有以下三种方法吧: char c = new java.util.Scanner(System.in).next().charAt( ...
- c语言int类型的变量输入一个字符出错
今天遇到一个C语言的小问题,就是写一个简单的计算器,定义一个%f%c%f的三个变量,作2+3,2-3这种可以不断输入并输入“OFF”跳出循环的计算器功能,便会出现错误: 错误的示例代码如下: #inc ...
- javascript语句——条件语句、循环语句和跳转语句
× 目录 [1]条件语句 [2]循环语句 [3]跳转语句 前面的话 默认情况下,javascript解释器依照语句的编写顺序依次执行.而javascript中的很多语句可以改变语句的默认执行顺序.本文 ...
随机推荐
- apple watch 与 iphone 之间的通信方式
apple watch 与 iphone 之间的通信方式:通过watchkit WatchKit应用扩展都提供一个名为WKInterfaceController的子类来管理相应的界面. 启动watch ...
- FORM ACTION=""
FORM ACTION="" 如果什么都不写,就表示提交到当前页
- Java数据持久层框架 MyBatis之背景知识一
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- iptables nat及端口映射
iptables nat及端口映射 发布: 2010-6-11 15:05 | 作者: admin | 来源: SF NetWork 门户网站 iptables 应用初探(nat+三层访问控制) ip ...
- ThinkServer TD340服务器安装操作系统[转]
一:服务器概况 服务器是联想旗下ThinkServer品牌TD340型号服务器,服务器标配32G内存,1T硬盘.其中服务器使用RAID(磁盘阵列)技术,拥有一个RAID卡,服务器标配一个大小为1T的磁 ...
- mybatis中@Param的用法和作用
用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Ma ...
- Linxu指令--crond
前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个 ...
- base64_encode与base64_decode
base64_encode 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! base64_encode() returns 使用 base64 对 data 进行编码. ...
- rem与@media 的优缺点
首先: 如果我们在做单独移动端网站或者app的时候 我建议 使用 rem ; 他能让我们在手机各个机型的适配方面:大大减少我们代码的重复性,是我们的代码更兼容. 下面两个图一个调试在常用的机 ...
- Android 使用EventBus发送消息接收消息
基本使用 自定义一个类 public class LoginEvent { private String code;//是否成功 public LoginEvent(String code) { th ...