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

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

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

时间: 2024-10-26 01:20:11

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

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

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

利用正则表达式校验input框输入的字符类型

当做form表单校验时,如果只是想校验输入字符的类型,那么可以在input等标签中利用正则表达式进行校验,而不用通过调用js. 例如,校验输入字符是否为正整数: <input type='text' onkeyup="value=this.value.replace(/\D+/g,'')" /> 或者校验输入字符是否为字符串为数字(正整数+正浮点数): <input type='text' onkeyup="value=this.value.replace(

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

1:代码如下: // 3.12.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { cout<<"输入一个A-D范围内的大写字母作为成绩评价"<<endl; char iInput; cin >> iInput; if(iInput == 'A') { cout <&l

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用while语句,条件为输入的字符不为 '\n '. 1 package com.li.FiftyAlgorthm; 2 3 import java.util.Scanner; 4 5 /** 6 * 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 7 * 8 * 程序分析:利用while语句,条件为输入的字符不为 '\n ' 9 * @author yejin 10 */ 11 pu

c语言:不用if,else语句,也不用循环条件等,输入一个字符,判断是否为大写字母

不用if,else语句,也不用循环条件等,输入一个字符,判断是否为大写字母,如果是,就转换成小写字母:否则不转换.最后输出得到的这个字符. 程序: #include<stdio.h> int main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); ch = (ch >= 'A'&&ch <= 'Z') ? (ch + 32) : ch; printf("%

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

利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): username = input("Username:") password = input("Password:") if username == _user and password == _password: print("Welcome %s logi

利用正则表达式来设置最大输入字符长度

        在做机房合作的时候,很多东西都进行了"改革",听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决.不过利用正则表达式,我还是没没想到.反正正则表达式都学过了,为什么不能拿过来用呢?让它和我原来的方法比试比试. 一.ascii码小试 之前的代码是利用ascii码来编写的: '限制输入的字符长度为0-16之间 Private Sub txtcardno_LostFocus() If Not Len(txtc

&lt;08&gt; while循环介绍及基本格式+while循环使用陷阱+统计键盘输入的字符数+

while循环介绍及基本格式(掌握): 循环结构: 当条件满足的时候 ,程序会重复的执行某一个代码段 构成循环结构的条件: 1)循环控制条件 2)循环体 3)让循环控制条件为假的控制 while循环的格式: while(表达式){ 语句块; } 1 #include <stdio.h> 2 3 void test1(){ 4 5 int i=1; 6 7 // 1)循环控制条件 8 while(i<=1000){ 9 10 //2)循环体 11 printf("第%d次说:我爱

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

//利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 ==0||year %4 ==0 &&year %100 !=0) //闰年的二月份29天,非闰年的二月份是28天 { print("29天") }else { print("28天") } } else { //考虑其他两种情况 switchmonth