码迷,mamicode.com
首页 > 其他好文 > 详细

利用while语句,条件为输入的字符不为'\n'.

时间:2018-02-27 01:00:25      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:字符   下标越界   array   错误   param   import   family   height   c中   

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 
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语句,条件为输入的字符不为'\n'.

标签:字符   下标越界   array   错误   param   import   family   height   c中   

原文地址:https://www.cnblogs.com/MoRua/p/8476414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!