【发布时间】:2021-05-13 16:31:14
【问题描述】:
我有一个包含以下内容的文本(比如 test.txt)文件
1
2,3
基本上可以认为是"1\n2,3"。我正在编写一个简单的 Java 代码,它读取这个输入并且应该将输出作为 6(提取的 3 个数字的总和)。
这里存在一些问题,因为它无法忽略分隔符。它自己停止在那里接受输入。
public static void main(String[] args) throws IOException{
File f=new File("./test.txt");
Scanner sc=new Scanner(f);
sc.useDelimiter("\n");
String input=sc.next();
int result=Add(input);
System.out.println(result);}
在我的 Add() 函数中,我使用了正则表达式来考虑 \n 和 ","。代码如下:
public static int Add(String numbers){
if(numbers.length()==0)
{
return 0;
}
if(numbers.length()==1)
{
int num=Integer.parseInt(numbers);
return num;
}
// 1,2,3\n4
String[] nums=numbers.split("\\n|,");
int sum=0;
for(int i=0;i<nums.length;i++)
{
int num1=Integer.parseInt(nums[i]);
sum+=num1;
}
return sum;}
但是,我得到的答案不是 6,而是 1。我在哪里失败了?
【问题讨论】:
-
您只是从扫描仪读取第一个值。该值为“1”。
-
为什么要使用
next()和'\n'分隔符,而您可以只使用nextLine()?