编写一个程序,提示用户输入字符串,然后显示字符总数和小写字符总数

时间:2014-04-13 20:03:10

标签: java string char

我是初学者所以请帮助我!所以我的目标是用简单的java编写一个程序,让人们输入一个字符串,然后打印总字符,以及总小写字符,这是我到目前为止所拥有的......

import java.util.Scanner;

public class test2 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        String s = input.nextLine;
        String lower = "";
        String total = "";

        for (int i = 0; i < s.length(); i++) {
            char thisChar = s.charAt(i);
        } if (thisChar >= 97 && thisChar <= 122) {
            lower += thisChar;
        }

        System.out.println("Total amount of characters: " + s.length() + " - " + s);
        System.out.println("Lower case letters: " + lower.length() + " - " + lower);    
    }
}

4 个答案:

答案 0 :(得分:0)

试试这个:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a string");
    String s = input.nextLine();// methods should be called with () even if have no argument

    String lower = "";
    String total = "";

    for (int i = 0; i < s.length(); i++) {
        char thisChar = s.charAt(i);
        // you can replace with : if (Character.isLowerCase(thisChar))
        if (thisChar >= 97 && thisChar <= 122) {
            lower += thisChar;
        }
    }//close the for loop here

    System.out.println("Total amount of characters: " + s.length() + " - " + s);
    System.out.println("Lower case letters: " + lower.length() + " - " + lower);
}

答案 1 :(得分:0)

问题是什么?

看起来你关闭了&#34;因为&#34;循环早于你应该

答案 2 :(得分:0)

  • nextLine是一种方法,所以它后面应该是括号。 nextLine()
  • 如果将char与char进行比较,编译器将使用它们自动比较它们,因此您不必知道任何字母的ASCII,只需按原样插入char即可。
  • if语句应该在for循环中,这是有意义的;)

检查此代码以便更好地理解。

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a string");
        String s = input.nextLine();

        String lower = "";

        for (int i = 0; i < s.length(); i++) {
            char thisChar = s.charAt(i);

            if (thisChar >= 'a' && thisChar <= 'z') {
                lower += thisChar;
            }
        }

        System.out.println("Total amount of characters: " + s.length() + " - " + s);
        System.out.println("Lower case letters: " + lower.length() + " - "+ lower);
    }

答案 3 :(得分:0)

  1. Scanner.nextLine()是一个方法,而不是一个变量,所以你应该把()放在它之后。查看您的String s = input.nextLine;并将其更改为String s = input.nextLine();

  2. 大括号

    for (int i = 0; i < s.length(); i++) {
        char thisChar = s.charAt(i);
    } if (thisChar >= 97 && thisChar <= 122) {
        lower += thisChar;
    }
    

    如您所见,第一个}关闭了for,这意味着:thisCar将不再可见,您无法在外面使用它!将其更改为

    for (int i = 0; i < s.length(); i++) {
        char thisChar = s.charAt(i);
     if (thisChar >= 97 && thisChar <= 122) {
        lower += thisChar;
     }
    }
    
  3. 使用&#39; a&#39;和&#39; z&#39;作为范围。所以if将是

    if (thisChar >= 'a' && thisChar <= 'z') {
    
  4. 您不需要总变量。

  5. 如果您需要创建字符串,请使用StringBuilder,这样可以避免创建无用的临时字符串。

  6. 逻辑

    1. 您只需要计算小写字母的数量或显示?如果是前者,只需使用整数变量并每次递增,而不是将所有内容放在较低的String中。

      int lower = 0;
      
      for (int i = 0; i < s.length(); i++) {
          char thisChar = s.charAt(i);
         if (thisChar >= 'a' && thisChar <= 'z') {
            lower ++;
        }
      }