使用String和int Java

时间:2016-01-28 09:04:09

标签: java split delimiter scanning

所以我有一个列表的.dat文件。每行以一个字母作为我的闹钟程序的命令开始,一些后面跟着时间格式的数字(XX:XX)。我需要扫描字母arr [0],以便程序知道要实现哪种方法,然后将整数与冒号分开,得到arr [1]和arr [2]。我似乎无法弄清楚如何做到这两点。

示例:T 25:00

while (scan.hasNextLine()){
  String[] data = scan.nextLine().split(" ");

   if (data[0] == "D"){
    myClock.getTime();
  }
  else if (data[0] == "A"){
    myClock.getAlarmTime();
  }
  else if (data[0] == "T"){
    myClock.setTime(data[1], data[2]);
  }
  else if (data[0] == "S"){
    myClock.setAlarmTime(data[1], data[2]);
  }
  else if (data[0] == "O"){
    myClock.setAlarmOn(true);
  }
  else if (data[0] == "F"){
    myClock.setAlarmOn(false);
  }
  else{
    myClock.quit();

告诉我我的类型不兼容,并且.string无法转换为int。那么我该如何单独转换或扫描这两个?

3 个答案:

答案 0 :(得分:0)

而不是

String str[] = scan.nextLine().split(" ");

地方

String str[] = scan.nextLine().split(" |:");
...............
if (str[0].equals("T"))
myClock.setTime(Integer.parseInt(str[1], Integer.parseInt(str[2]);

另一个问题是if (data[0] == "T" )意味着比较字符串

在java中,我们应该使用equals()检查字符串是否相同,无论两者是否相同。

而不是

 if (data[0] == "T" )

使用

if (data[0].equals( "T" ))

答案 1 :(得分:0)

如果您的错误位于此行innerHTML,请尝试将其转换为int。

Mby你的myClock.setAlarmTime(data[1], data[2]);setAlarmTime的函数需要整数并且你正在传递字符串,编译器通常会建议这个。

试试这个:

setTime

此外,您希望将此myClock.setAlarmTime(Integer.valueOf(data[1]), Integer.valueOf(data[2])); 分隔为:{" T"," 25"," 00" }

使用此行T 25:00,您将获得:{" T"," 25:00" }

您需要在执行String[] data = scan.nextLine().split(" ");setAlarmTime之前再次拆分数据[1]:

setTime

答案 2 :(得分:0)

松散地基于@Boris蜘蛛评论

public class EnumCommand {

public static void main(String[] args) {

    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader("csv.dat"));
        String s;
        while ((s = br.readLine()) != null) {
            StringTokenizer st = new StringTokenizer(s);
            MyCommand.valueOf(st.nextToken()).execute(s);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
    }

}

private enum MyCommand {
    D {

        @Override
        public void execute(String predicate) {
            //getTime

        }
    },
    A {
        @Override
        public void execute(String predicate) {
            //getAlarm Time

        }
    },
    T {
        @Override
        public void execute(String predicate) {
            //setTime .. Parse here for time
            System.out.println(predicate);

        }
    },
    S {
        @Override
        public void execute(String predicate) {
            //set alarm Time Parse here for time
            System.out.println(predicate);

        }
    },
    O {
        @Override
        public void execute(String predicate) {
            //On alarm

        }
    },
    F {
        @Override
        public void execute(String predicate) {
            //Off alarm

        }
    };

    public abstract void execute(String predicate);
}
}