用户输入由空格,制表符或新行分隔的数字

时间:2013-02-10 20:02:55

标签: java eclipse

我是一个初学java编程课程,我坚持认为应该简单,但它会杀了我。提示用户输入任意数量的x,y值,并且可以用空格,制表符或新行分隔输入。所以可以这样输入:

1.0 1.0 2.0 2.0 3.0 3.0 etc...

1.0 (tab) 1.0 (tab) 2.0 (tab) 2.0 (tab) etc...

1.0 1.0
2.0 2.0
3.0 3.0

等...

那很好但很棒,但我不知道如何分开这些数字。我想要有一个x var和一个y var,并希望将它们分成这个,但我该怎么办呢?我的第一个想法可能是一个阵列,但我们还没有覆盖那些。我觉得这很容易,我只是错过了它

4 个答案:

答案 0 :(得分:0)

你将要使用正则表达式 - 找到字符串中的所有空格,然后拆分它。

String[] vals = t1.split("[\\s]+");

\swhitespace character regex search pattern

答案 1 :(得分:0)

我可以为您提供扫描仪。您可以设置可以输入的分隔符。

Scanner s = new Scanner("This is a , test word \n ");
s.useDelimiter(",|\\n");
while(s.hasNext()){
   System.out.println(s.next());
}

答案 2 :(得分:0)

你走了。 [ \t]是一个正则表达式,表示空格或制表符。

public static void main(String[] args) throws IOException
{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String line = br.readLine();
  while (line != null && !line.isEmpty())
  {
    String[] arr = line.split("[ \t]");
    for (int i = 0; i < arr.length; i += 2)
    {
      doSomething(Double.parseDouble(arr[i]), Double.parseDouble(arr[i+1]));
    }
    line = br.readLine();
  }
}

static void doSomething(double x, double y)
{
  System.out.println("x is "+x+", y is "+y);
}

您可能还想要包含一些错误检查。

答案 3 :(得分:0)

您可以使用BufferedReader + Scanner读取由空格或换行符分隔的数据:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner input = new Scanner(br);

&安培;使用扫描仪一个接一个地读取数字,它将等到一个数字然后读取它,无论是什么将它们分隔一个空格或一个新行

int numbersCount = 5; //numbersCount is the count of the numbers you are wanting to read from the input , so if you are waiting 5 numbers then it will be 5. 
int[] numbers = new int[numbersCount];
for (int i=0;i<numbersCount;i++) 
{
  numbers[i] = input.nextInt();
}
  

所以数组编号将包含你想要的所有数字isA

希望这会有所帮助