鱼C论坛

 找回密码
 立即注册
查看: 2130|回复: 6

[已解决]java 不确定个数输入求和

[复制链接]
发表于 2022-2-7 23:07:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目如下

给出一串的数,请计算它们的和。输入只有一行,包含若干个数,数之间用空格隔开。数字和答案保证在int范围内。


就是说输入不确定是多少个,这种情况应该怎么写啊,
import java.util.*;

public class Main {
        public static void main(String[] args) {
                int a=0;
                Scanner in = new Scanner(System.in);
                while(in.hasNextLine()) {
                        a += in.nextInt();
                }
                in.close();
                System.out.println(a);
        }
}
以上是我写的,但是执行不出结果,求解惑!!!!
最佳答案
2022-2-8 09:37:19

直接用做循环判断会阻塞,改成这样吧:
import java.util.*;

public class Main {
    public static void main(String[] args) {
        int a = 0;
        Scanner in = new Scanner(System.in);
        if (in.hasNextLine()) {
            String[] temp = in.nextLine().split(" ");
            for (int i = 0; i < temp.length; i++) {
                a += Integer.parseInt(temp[i]);
            }
        }
        in.close();
        System.out.println(a);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-8 09:25:48 From FishC Mobile | 显示全部楼层
试试这个:
import java.util.Scanner;

public class Main {
        public static void main(String[] args) {
                int sum = 0;
                Scanner in = new Scanner(System.in);
                while (in.hasNext()) {
                        if (in.hasNextInt())
                        sum += in.nextInt();
                        else
                        in.next();
                }
                in.close();
                System.out.println(sum);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-8 09:37:19 | 显示全部楼层    本楼为最佳答案   

直接用做循环判断会阻塞,改成这样吧:
import java.util.*;

public class Main {
    public static void main(String[] args) {
        int a = 0;
        Scanner in = new Scanner(System.in);
        if (in.hasNextLine()) {
            String[] temp = in.nextLine().split(" ");
            for (int i = 0; i < temp.length; i++) {
                a += Integer.parseInt(temp[i]);
            }
        }
        in.close();
        System.out.println(a);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-8 11:31:08 | 显示全部楼层

也不行,
例如输入这一行:
1 6 -9 6 5
还是不出结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-8 11:33:03 | 显示全部楼层
Twilight6 发表于 2022-2-8 09:37
直接用做循环判断会阻塞,改成这样吧:

这样可以了,但是貌似有点复杂哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-8 11:51:33 | 显示全部楼层
Twilight6 发表于 2022-2-8 09:37
直接用做循环判断会阻塞,改成这样吧:

懂了,谢谢!之前不知道split这个方法,请问next和nextLine方法的区别是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-8 17:04:09 | 显示全部楼层
905853663 发表于 2022-2-8 11:51
懂了,谢谢!之前不知道split这个方法,请问next和nextLine方法的区别是什么


next 方法返回的是 非空格的有效字符,比如你输入:1 2 3 依次循环 3 次 next 会得到 "1" "2" "3"

nextLine 方法返回的是 回车 之前的所有字符,相当于此时输入的一整行字符 例如:1 2 3 返回的就是 "1 2 3"

split 分割字符串,返回一个字符串类型的数组

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-8 13:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表