0

假设我从一个文本文件中得到一个字符串,比如

“是的 ABC 123

是 DEF 456

是 GHI 789"

我使用此代码按空格拆分字符串。

while (inputFile.hasNext())
  {
     String stuff = inputFile.nextLine();

     String[] tokens = stuff.split(" ");

     for (String s : tokens)
     System.out.println(s);
  }

但我也想将 Yes 分配给布尔值,将 ABC 分配给另一个字符串,将 123 分配给 int。我怎样才能分别拿起它们?谢谢!

4

4 回答 4

1
boolean b=tokens[0].equalsIgnoreCase("yes");
String name=tokens[1];
int i=Integer.parseInt(tokens[2]);
于 2013-09-29T20:29:13.783 回答
0

你能澄清一下你所做的确切目的是什么吗?您可以使用 tokens[i] 引用单独的字符串,其中 i 是索引。您可以将它们放入 switch 语句(从 Java 7 开始)并匹配您要查找的单词。然后您可以采取进一步的措施,即将字符串转换为布尔值或整数。

即使您希望文件始终将这 3 个单词用空格分隔,您也应该考虑检查输入是否有效。

于 2013-09-29T20:27:06.317 回答
0

创建类Line并将List<Line>所有文件存储到列表中:

public class Line{

private boolean mFlag = false;
private int  mNum = 0;
private String  mStr;

public Line(String stuff) {
    String[] tokens = stuff.split("[ ]+");

    if(tokens.length ==3){
        mFlag=tokens[0].equalsIgnoreCase("yes");
        mNum=Integer.parseInt(tokens[1]);
        mStr=tokens[3];
    }
}
}

并称之为:

public static void main(String[] args) {

 List<Line> list = new ArrayList<Line>(); 
 Line line;

 while (inputFile.hasNext())
 {
  String stuff = inputFile.nextLine();

  line = new Line(stuff);

  list.add(line);
 }
}
于 2013-09-29T20:33:18.023 回答
0

如果您的输入字符串始终采用相同的格式,即boolean, Stringint那么您可以访问数组的各个索引token并将它们转换为您指定的格式

boolean opinion = tokens[0].equalsIgnoreCase("yes");
String temp = token[1];
int i = Integer.parseInt(token[2])

但是您可能需要创建一个数组或其他东西来存储用户执行的连续输入的值,否则这些变量将被用户的每个新输入覆盖。

于 2013-09-29T20:36:19.030 回答