鱼C论坛

 找回密码
 立即注册
查看: 2868|回复: 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

直接用做循环判断会阻塞,改成这样吧:

  1. import java.util.*;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         int a = 0;
  5.         Scanner in = new Scanner(System.in);
  6.         if (in.hasNextLine()) {
  7.             String[] temp = in.nextLine().split(" ");
  8.             for (int i = 0; i < temp.length; i++) {
  9.                 a += Integer.parseInt(temp[i]);
  10.             }
  11.         }
  12.         in.close();
  13.         System.out.println(a);
  14.     }
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. public class Main {
  3.         public static void main(String[] args) {
  4.                 int sum = 0;
  5.                 Scanner in = new Scanner(System.in);
  6.                 while (in.hasNext()) {
  7.                         if (in.hasNextInt())
  8.                         sum += in.nextInt();
  9.                         else
  10.                         in.next();
  11.                 }
  12.                 in.close();
  13.                 System.out.println(sum);
  14.         }
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

直接用做循环判断会阻塞,改成这样吧:

  1. import java.util.*;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         int a = 0;
  5.         Scanner in = new Scanner(System.in);
  6.         if (in.hasNextLine()) {
  7.             String[] temp = in.nextLine().split(" ");
  8.             for (int i = 0; i < temp.length; i++) {
  9.                 a += Integer.parseInt(temp[i]);
  10.             }
  11.         }
  12.         in.close();
  13.         System.out.println(a);
  14.     }
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

也不行,
例如输入这一行:
1 6 -9 6 5
还是不出结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这样可以了,但是貌似有点复杂哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

懂了,谢谢!之前不知道split这个方法,请问next和nextLine方法的区别是什么
小甲鱼最新课程 -> https://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 分割字符串,返回一个字符串类型的数组

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 05:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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