验证数字和句点/小数的字符串

时间:2015-11-15 04:35:46

标签: java string if-statement charat

我有这个简短的代码片段,我必须检查一个字符串,看它是否包含整数和可能的小数。该字符串是一笔金额(12.34),因此它不能超过第四个索引。

我的问题是,我被告知要使用charAt()(在我的代码中我使用matches()contains()这是错误的)来检查整数和小数,以便如果字符串与这些参数一起使用,此例程将返回一个布尔值,但是我对如何将其转换为使用charAt()而不是matches()和{{1}感到困惑。 }。

同样,我很抱歉,如果我把这个错误格式化,或说错了,或者代码看起来很糟糕,我在我的第一个学期Java,这是我的第一个编程我曾经参加过I级课程,所以我有点粗糙。

contains()

2 个答案:

答案 0 :(得分:0)

这样怎么样?

import java.util.Scanner;

公共类拍卖{

private static final String numberRegex = "^\\d*(\\.\\d+)?$";
private static final String integerNumber = "^\\d*$";
private static final int MAX_LENGTH = 5;

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    String price;
    String quantity;

    System.out.print("How much money are you willing to bet on this item?: $");
    price = keyboard.next();

    if (price.length() <= MAX_LENGTH && price.matches(numberRegex)) {
        Float f = Float.parseFloat(price);
        System.out.printf("$%5.2f\n", f);
    } else {
        System.out.println("Invalid input");
        return;
    }

    System.out.print("What quantity do you want to bid on?: ");

    quantity = keyboard.next();
    if (!quantity.matches(integerNumber)) {
        System.out.println("Invalid input");
    }
}

}

答案 1 :(得分:0)

我正在通过手机输入。请原谅我的错误。您的教授是否曾要求您使用charAt而不是正则表达式和匹配?

if (inpString!= null && !inpString.isEmpty () && inpString.length() <= 5){
   int periodCount = 0;
   for (int i=0; i  < inpString.length (); i++){  
      char c = inpString.charAt (i);
      if (c == '.'){
         periodCount++;
      }else if (c >= '0' && c  <= '9'){


      }else {
              System.out.println("invalid output");
              break;
      }
      if(periodCount > 1){
          System.out.println("too may periods. Invalid output"); 
          break;
      }


   }
}else { 
       System.out.println ("invalid input");
    }

如果您需要检查没有千位数字,即1.234,您能评论一下吗?如果是,请确保

          inpString.substring       
              (inpString.lastIndexOf 
                 (".")).length < 3 

使用所有null和indexOutOfBounds检查