字符串使用运算符>;及<;java来限制数字的数量

字符串使用运算符>;及<;java来限制数字的数量,java,android,operator-keyword,Java,Android,Operator Keyword,我不熟悉android和java。我需要帮助。我需要使用字符串作为方法isValid,如下所示。但是字符串不能使用operator>和0&&Phone0&&phoneNumber

我不熟悉android和java。我需要帮助。我需要使用字符串作为方法isValid,如下所示。但是字符串不能使用operator>和0&&Phone<100000000) 返回true; 返回false; //TODO自动生成的方法存根 } 私有void setUpViews() { ExitButton=(按钮)findViewById(R.id.BtnExit); saveButton=(Button)findViewById(R.id.BtnSave); NameEditText=(EditText)findViewById(R.id.NameEditText); PhoneEditText=(EditText)findViewById(R.id.PhoneEditText); EmailEditText=(EditText)findViewById(R.id.EmailEditText); 日期=(TextView)findViewById(R.id.DateTextView); } @凌驾 公共布尔onCreateOptions菜单(菜单){ //为菜单充气;这会将项目添加到操作栏(如果存在)。 getMenuInflater().充气(R.menu.addcontacts,menu); 返回true; } }

接触

 package com.Elson.ProjectVersion;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;


public class Contacts implements Comparable<Contacts> {

    private long id;
    private String name;
    private String Phone;
    private int Email;
    private Date date;
    private double runningAverage;




    public Contacts(String name, String Phone,  Date date) {
        this.name = name;
        this.Phone = Phone;
        this.date = null;
    }

    public Contacts(long id, String name,String Phone) {
        this.id=id;
        this.Phone=Phone;
        this.name= (name);

    }


    public long getId() {

        return id;
    }
    public void setId(long id) {
        this.id = id;
    }

    public String getPhone() {
        return Phone;
    }
    public void setPhone(String Phone) {
        this.Phone = Phone;
    }
    public String getname() {
        return name;
    }
    public void setname(String name) {
        this.name = name;
    }
    public Date getDate() {
        return null;
    }

    public long getDateEpoch(){
        return date.getTime()/1000;
    }
    public void setDateEpoch(long seconds){
        date= new Date (seconds*1000);
    }
    public void setDate(Date date) {
        this.date = date;
    }




    public void setRunningAverage(double runningAverage) {
        this.runningAverage = runningAverage;
    }
    public boolean equals(Object that){
        Contacts bs = (Contacts) that;

        return this.date.equals(bs.date);
      }


    @Override



    public String toString() {
        String result;

        if(date != null) {
            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
            result = df.format(date) + "" + name + "" + Phone ; 
    }
    else {
          result = name + "" + Phone ; 
    }
        return result;
    }





    @Override
    public int compareTo(Contacts another) {    
        // TODO Auto-generated method stub
        return 0;
    }
package com.Elson.ProjectVersion;
导入java.text.DateFormat;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Date;
公共类联系人实现了可比较的{
私人长id;
私有字符串名称;
私人电话;
私人电子邮件;
私人日期;
私人双平均线;
公共联系人(字符串名称、字符串电话、日期){
this.name=名称;
这个。电话=电话;
this.date=null;
}
公共联系人(长id、字符串名称、字符串电话){
这个.id=id;
这个。电话=电话;
this.name=(name);
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getPhone(){
回电话;
}
公用无效设置电话(字符串电话){
这个。电话=电话;
}
公共字符串getname(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共日期getDate(){
返回null;
}
公共长getDateEpoch(){
返回日期。getTime()/1000;
}
public void setDateEpoch(长秒){
日期=新日期(秒*1000);
}
公共作废设置日期(日期){
this.date=日期;
}
公共无效设置运行平均值(双运行平均值){
this.runningAverage=runningAverage;
}
公共布尔等于(该对象){
联系人bs=(联系人)表示:;
返回此.date.equals(bs.date);
}
@凌驾
公共字符串toString(){
字符串结果;
如果(日期!=null){
DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT);
结果=df.格式(日期)+姓名++电话;
}
否则{
结果=姓名+“”+电话;
}
返回结果;
}
@凌驾
公共int比较(联系其他人){
//TODO自动生成的方法存根
返回0;
}

}

首先只需将字符串转换为int

int foo = Integer.parseInt("1234");

您可以使用
Integer.parseInt(字符串s)
from

您需要将字符串转换为支持与
int
进行比较的表示形式:另一个数字

您可以使用
Long.parseLong(字符串)

long phoneNumber=long.parseLong(电话);
如果(phoneNumber>0&&phoneNumber<10000000)
请注意,如果您试图解析一个不是数字表示形式的字符串,这可能会引发
NumberFormatException
,因此您应该将代码包含在
try/catch
块中,如果引发异常,则返回false

一个
字符串
不直接支持与
进行比较,这一点并不奇怪。它们是不同的类型,不能相互隐式转换

问题

“foobar”
是否小于
6141


没有任何意义。

不要使用比较,使用正则表达式:

if(phone.matches("[0-9]{1,9}")){
     //Do soemthing
}
如果您需要一个数值,请执行以下操作

long phNum= Long.parseLong(phone);

然后使用
phNum
执行任何需要的操作。别忘了将其包装在一个try块中,并捕获
NumberFormatException

您在哪里声明了
电话
?抱歉,好的。我将更新postNowhere。顺便说一句,因为它是字符串,你应该使用正则表达式来检查它的格式是否正确,而不是将它与一些疯狂的数字进行比较。我已经更新了后处理,如果值超过大约20亿,则int可能引发不必要的异常。如果值超过大约20亿,解析int可能引发不必要的异常。此外,应通知OP是否需要捕获异常。@hexfraction:我正在编辑问题,而您对此进行了评论。@hexfraction:第一个问题(溢出)可以通过使用
long
数据类型轻松解决,即使允许的最大输入是
100000000
,如果
int
溢出,返回
false
也可以。明白了,只是想向OP特别是未来的访客说明可能需要更大的截止时间。
if(phone.matches("[0-9]{1,9}")){
     //Do soemthing
}
long phNum= Long.parseLong(phone);