利用while语句,条件为输入的字符不为' '.
Posted MoRua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用while语句,条件为输入的字符不为' '.相关的知识,希望对你有一定的参考价值。
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为\'\\n\'.
一个很简单的问题,其实换种方式就能完成,但是我就想怎么着才能在while()判断 输入的字符是否为\'\\n\'。(*^▽^*)
1 /** 2 * 3 */ 4 package Training; 5 6 import java.util.Scanner; 7 8 /** 9 * @author Administrator 10 * 11 */ 12 public class putIn6 { 13 14 /** 15 * @param args 16 */ 17 public static void main(String[] args) { 18 int charnum=0,othnum=0,spacenum=0,dnum=0; 19 System.out.println("单独输入回车,结束输入:"); 20 @SuppressWarnings("resource") 21 Scanner scanner=new Scanner(System.in); 22 String str1=scanner.next(); 23 char str=str1.charAt(0); 24 // char [] arr =str.toCharArray(); 25 // int length=arr.length; 26 // int i=0; 27 while((char str =scanner.next().charAt(0)!=\'\\n\')) { 28 // if(arr[i]==\'\\n\') 29 // break; 30 //判断是否是字母 31 if(Character.isLetter(str)) 32 charnum++; 33 //判断是否是数字 34 else if(Character.isDigit(str)) 35 dnum++; 36 //判断是否是空格 37 else if(Character.isWhitespace(str)) 38 spacenum++; 39 //判断是否是其他 40 else 41 othnum++; 42 @SuppressWarnings("resource") 43 Scanner scanner1=new Scanner(System.in); 44 String str11=scanner1.next(); 45 char str2=str11.charAt(0); 46 str=str2; 47 // if(i<length) 48 // i++; 49 } 50 System.out.println("字母数:"+charnum+" 数字数:"+dnum+" 空格数:"+spacenum+" 其他数:"+othnum); 51 } 52 53 }
思考很久后依旧无法解决,在使用while的情况下,实现 以下的效果
2\'\\n\'
3\'\\n\'
w\'\\n\'
\'\\n\'
字母数:1 数字数:2 空格数:0 其他数:0
1 /** 2 * 3 */ 4 package Training; 5 6 import java.util.Scanner; 7 8 /** 9 * @author Administrator 10 * 11 */ 12 public class putIn6 { 13 14 /** 15 * @param args 16 */ 17 public static void main(String[] args) { 18 int charnum=0,othnum=0,spacenum=0,dnum=0; 19 System.out.println("回车结束输入:"); 20 @SuppressWarnings("resource") 21 Scanner scanner=new Scanner(System.in); 22 String str=scanner.next(); 23 // char str=str1.charAt(0); 24 char [] arr =str.toCharArray(); 25 int length=arr.length; 26 int i=0; 27 while(i<length) { 28 if(arr[i]==\'\\n\') 29 break; 30 //判断是否是字母 31 if(Character.isLetter(arr[i])) 32 charnum++; 33 //判断是否是数字 34 else if(Character.isDigit(arr[i])) 35 dnum++; 36 //判断是否是空格 37 else if(Character.isWhitespace( arr[i])) 38 spacenum++; 39 //判断是否是其他 40 else 41 othnum++; 42 // @SuppressWarnings("resource") 43 // Scanner scanner1=new Scanner(System.in); 44 // String str11=scanner1.next(); 45 // char str2=str11.charAt(0); 46 // str=str2; 47 if(i<length) 48 i++; 49 } 50 System.out.println("字母数:"+charnum+" 数字数:"+dnum+" 空格数:"+spacenum+" 其他数:"+othnum); 51 } 52 53 }
只能实现以下效果
回车结束输入:
asdas 2626 asd as
字母数:5 数字数:0 空格数:0 其他数:0
思考加询问过后,得出以下结论
1. java和c的字符串不一样,c中\'\\n\'会是字符串中的最后一部分,而java把\'\\n\'当成一个结束输入的标志,不存在字符串中。
所以我试了很多次后,大部分的错误都是while循环到最后数组下标越界。
不知道那个大神能写出来第一种的效果。
以上是关于利用while语句,条件为输入的字符不为' '.的主要内容,如果未能解决你的问题,请参考以下文章