2013-03-07 47 views
0

我應該創建一個程序來計算用戶輸入的特定類型的字符數 。計數大寫字母,小寫字母,數字 (09)以及除#符號以外的其他字符的數量。用戶輸入#退出。用戶使用Java輸入的字符數錯誤

import java.util.Scanner; 
public class countchars 
{ 
    public static void main (String args[]) 
    { 
    Scanner input = new Scanner (System.in); 

    char sym; 
    int up = 0; 
    int low = 0; 
    int digit = 0; 
    int other = 0; 

    System.out.print("Enter a character # to quit: "); 
    sym = input.next().charAt(0); 

    while(sym != '#') 
    { 
    System.out.print("Enter a character # to quit: "); 
    sym = input.next().charAt(0); 

    if (sym >= 'a' && sym <= 'z') 
     { 
     low++; 
     } 
    } 

    System.out.printf("Number of lowercase letters: %d\n", low); 
    } 
} 

這就是我到目前爲止的小寫數。問題是,當我運行該程序,並輸入4個小寫字母,它只能算作3

+0

你可以用你的低++的if語句中嘗試添加打印語句一同確認有多少次走進聲明:) – Oneb 2013-03-07 06:29:14

+0

家庭作業的問題?應該被標記。 – 2013-03-07 06:32:39

+0

@EvanKnowles'家庭作業'標籤已過時 - > http://stackoverflow.com/tags/homework/info – Apurv 2013-03-07 06:37:37

回答

2

變化這樣

while(sym != '#') 
    { 

    if (sym >= 'a' && sym <= 'z') 
     { 
     low++; 
     } 

    System.out.print("Enter a character # to quit: "); 
    sym = input.next().charAt(0); 

    } 
+0

啊,工作!非常感謝你! – user1858350 2013-03-07 06:34:48

+1

不客氣:) – 2013-03-07 06:39:05

+3

atleast接受答案,如果你使用它:) – Oneb 2013-03-07 06:40:47

4

你已經通過了第一次你算叫

input.next() 

兩次,所以第一個字符將被丟棄,搞亂你一個人計數。

0

不要使用兩次input.next();

使用本

sym = input.next().charAt(0); 

    while(sym != '#') 
    { 
    System.out.print("Enter a character # to quit: "); 
    //sym = input.next().charAt(0); removed this line and try 

    if (sym >= 'a' && sym <= 'z') 
     { 
     low++; 
     } 


    }