Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助将输入从字符串拆分为int吗_Java_String_Split_Int - Fatal编程技术网

Java 需要帮助将输入从字符串拆分为int吗

Java 需要帮助将输入从字符串拆分为int吗,java,string,split,int,Java,String,Split,Int,我让用户以这种格式输入一个分数问题(4/8–3/12或3+2/3或12/16*4或-2/3/64/96),需要将这两个分数拆分成一个数组,然后我需要提取这两个分数的分子和分母,以便在我的另一个文件中简化它们并执行它要求的任何计算,所以我需要使用一个数组,这样我就可以调用其中有符号的元素 System.out.println("Enter Fraction:"); String answer = s.nextLine(); String[] numbers = answer.split("

我让用户以这种格式输入一个分数问题(4/8–3/12或3+2/3或12/16*4或-2/3/64/96),需要将这两个分数拆分成一个数组,然后我需要提取这两个分数的分子和分母,以便在我的另一个文件中简化它们并执行它要求的任何计算,所以我需要使用一个数组,这样我就可以调用其中有符号的元素

System.out.println("Enter Fraction:");
String answer = s.nextLine(); 


String[] numbers = answer.split(" ");
System.out.print(numbers);

有没有办法将数组拆分为int变量?我迷路了。解决方案可能很简单,但在这个项目中已经使用了7个小时左右

埃里克·利珀特在处理这些问题时给了我最好的建议

用英文/伪代码写出问题,然后开始将伪代码改为实代码

Get Answer from user
Break Answer up to the 2 fractions/numbers and the math operator
Take the 2 different fractions and convert them to a double, float, whatever you need
Apply the math operation to the 2 numbers from the above step
Output the answer

现在,只要开始用你将如何做的方式替换每一行。我相信,你可能会明白每一步,但有时我们在考虑整个问题时会迷失方向。如果你不能想出一个单独的步骤,请发布你尝试过的代码,我们可以帮助你解决一个特定的问题。

Eric Lippert在处理这些问题时给出了我见过的最好的建议

用英文/伪代码写出问题,然后开始将伪代码改为实代码

Get Answer from user
Break Answer up to the 2 fractions/numbers and the math operator
Take the 2 different fractions and convert them to a double, float, whatever you need
Apply the math operation to the 2 numbers from the above step
Output the answer

现在,只要开始用你将如何做的方式替换每一行。我相信,你可能会明白每一步,但有时我们在考虑整个问题时会迷失方向。如果您无法理解单个步骤,请发布您尝试过的代码,我们可以帮助您解决特定问题。

您可以使用简单的正则表达式拆分输入,如下所示:

Pattern p = Pattern.compile("\\d+|[+-/*]");
String inp = "2/3/64/96";
Matcher m = p.matcher(inp);
while (m.find()) {
    System.out.println(m.group());
}
此解决方案的核心是正则表达式:

\\d+|[+-/*]
\\d+
表示“一个或多个数字;
[+-/*]
表示“任何
+
-
/
*
中的一个”

这是一本书


请注意,您的程序在决定
+
-
是一元“更改符号”还是二元运算时需要非常小心:当符号位于另一个运算符的开头或后面时,它是一元的;否则,它是二元的。

您可以用一个简单的正则表达式拆分输入,如下所示:

Pattern p = Pattern.compile("\\d+|[+-/*]");
String inp = "2/3/64/96";
Matcher m = p.matcher(inp);
while (m.find()) {
    System.out.println(m.group());
}
此解决方案的核心是正则表达式:

\\d+|[+-/*]
\\d+
表示“一个或多个数字<代码>[+-/*]表示“任何
+
-
/
*
中的一种”

这是一本书


请注意,您的程序在决定
+
-
是一元“更改符号”还是二进制操作时需要非常小心:当符号位于另一个运算符的开头或后面时,它是一元的;否则,它是二进制的。

到目前为止,您的代码只是将输入拆分为表达式。您仍然需要将表达式拆分为分数

当已经有分数的字符串数组时,可以将每个元素拆分为2个整数:

  • 使用
    Split(“/”

  • 使用
    Integer.parseInt()
    方法将每个子字符串转换为int


  • 到目前为止,您的代码只是将输入拆分为表达式。您仍然需要将表达式拆分为分数

    当已经有分数的字符串数组时,可以将每个元素拆分为2个整数:

  • 使用
    Split(“/”

  • 使用
    Integer.parseInt()
    方法将每个子字符串转换为int


  • 我不希望将它们转换为双精度或浮点型,因为我正在寻找分数和答案的最低形式。因此,我添加了一节,说“你需要什么”,double/float只是一个建议。我不想将它们转换为double或float,因为我正在寻找分数和答案可以采用的最低形式。因此,我添加了一节,说“你需要什么”,double/float只是一个建议。