如何查看字符串中的数字是否比java中的其他符号多

时间:2010-10-03 16:00:33

标签: java numbers

因此,对于作业,我必须制作一个程序,要求输入一个字符串然后检测回文。

事情是,也可以放入数字。当字符串输入的一半以上是数字时,需要将字符串视为数字字符串并忽略其他符号。

所以我想把输入字符串放到一个数组中,然后查找数字(在48和57之间的ASCII#)并计算它们。然后比较数字与信件数量的比较,看看哪一个有更多。

然而,我似乎无法编程它计算字符串中的数字的事情。有人可以帮助我,我已经有了这个:

public class opgave41 {



public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    System.out.println("input  a string:");
    String reeks = sc.nextLine();
    char[] array1 = reeks.toCharArray();

    int numbers;
    int other;

    for(int i=0;i<array1.length;i++){

        if (int array1[i] < 57 || int array1[i] > 48) 
            numbers++;

        else
            other++;

    }
    System.out.prinln(numbers);
    System.out.prinln(other);
}

}

如果我编译它我得到这个:

opgave41.java:38: '.class' expected
        if (int array1[i] < 57 || int array1[i] > 48) 
                            ^

opgave41.java:39:')'预计                 数字++;
                                         ^ 2个错误

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

在解决了明显的语法错误后,我得到了基于你的代码:

  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    System.out.println("input  a string:");
    String reeks = sc.nextLine();

    int numbers = 0;
    int other = 0;

    for (char c : reeks.toCharArray()) {
      if ('0' <= c && c <= '9')
        numbers++;
      else
        other++;
    }

    System.out.println(numbers);
    System.out.println(other);
  }

我还用字符文字替换了幻数48和57,因为这样可以使意图更清晰。

答案 1 :(得分:1)

不需要循环,检查等,对于数字使用正则表达式会更容易。

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("input  a string:");
        String reeks = sc.nextLine();
        String symbols = reeks.replaceAll("[0-9]", "");

        System.out.println("others  - " + symbols.length());
        System.out.println("numbers - " + (reeks.length() - symbols.length()));

    }

答案 2 :(得分:0)

您正在检查array1.length这是字符数组的长度。我认为这不是你想要的。您希望array1[i]获取当前字符。另外,我认为你有这个倒退:

if (int array1.length < 57 || int array1.length > 48) 

假设你修复此问题以使用array1[i],它仍然会检查当前字符是否为数字。但是你继续增加numbers计数器。此外,您还可以考虑使用Character.isDigit()方法。

答案 3 :(得分:0)

逻辑正常*,您只需要使用char数组的元素而不是数组长度。所以只需替换

  if (int array1.length < 57 || int array1.length > 48) 

  if (array1[i] <= '9' && array1[i] >= '0') 

(请注意&&,因为您希望两个条件都为真。如果您使用||,则意味着少于9 OR < em>大于0 ,对于任何char

都是如此

* 除了一些语法错误