0

我在一个初学者的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

ETC...

好吧,这很好,但我不知道如何区分这些数字。我正在考虑有一个 x var 和 ay var 并想将它们分成这个,但是我该怎么做呢?我的第一个想法可能是一个数组,但我们还没有涵盖这些。我觉得这很容易,我只是想念它

4

6 回答 6

0

您可以使用以下内容按空格拆分字符串:

String[] parts = userinput.split(" ");

您可以使用以下选项按制表符拆分字符串:

String[] parts = userinput.split("\t");

您可以使用以下命令按行返回拆分字符串:

String[] parts = userinput.split("\n");

注意:您可能需要在上面添加一个 '/r' \n

所以,找到你的分隔符,使用上述之一(或更多,如果需要)分割你的字符串

那么您应该将所有数据都放在一个字符串数组中

于 2013-02-10T20:12:18.970 回答
0

我可以让你使用扫描仪。您可以设置可以输入的分隔符。

Scanner s = new Scanner("This is a , test word \n ");
s.useDelimiter(",|\\n");
while(s.hasNext()){
   System.out.println(s.next());
}
于 2013-02-10T20:12:50.097 回答
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);
}

您可能还希望包括一些错误检查。

于 2013-02-10T20:13:10.503 回答
0

如果您将输入作为字符串,您可以执行类似的操作

String[] input = inputString.split(" ");

然后将每个元素转换为您想要的类型。

于 2013-02-10T20:07:23.693 回答
0

您将要为此使用正则表达式 - 查找字符串中的所有空格,然后对其进行拆分。

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

\s空白字符正则表达式搜索模式

于 2013-02-10T20:10:52.497 回答
0

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

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

& 使用 Scanner 一个一个地读取数字,它会等到它遇到一个数字然后读取它,无论它们是用空格还是换行分隔

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();
}

所以数组 numbers 将包含您想要的所有数字 isA

希望这可以帮助

于 2016-01-10T16:44:43.023 回答