首页 > 解决方案 > 我不确定为什么代码不会输出任何语句。当我在我的 IDE 中运行它时,没有任何输出

问题描述

package Fall21;

import java.util.Scanner;

public class BalloonRideWeight {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int personWeight = sc.nextInt();
        int totalWeight = 0;
        
        for (int i=0; i<n; ++i) {
            totalWeight +=personWeight;
            personWeight =sc.nextInt();
        }
        
        if (totalWeight >500) 
            System.out.println("Everyone too fat.");
            
        else 
            System.out.println("Just right.");
        
        sc.close();
    }

}

这会是运行时问题吗???我只是在学习基础知识,因此不需要任何带有数组和更复杂代码级别的答案。

标签: java

解决方案


它可能不输出任何东西,因为你正在使用Scannerwhich 期望输入。当我运行您的程序并输入以下输入时

1
1
1

我得到输出

Just right.

这些调用中的每一个

sc.nextInt();

期望您输入存储在声明变量(语句左侧)中的输入。

因此,对于我的前两个输入,值 n = 1, personWeight = 1 然后循环迭代 1 次,其中包含另一个扫描仪调用设置personWeight. 我再次设置为1

只有这样它才能达到将某些内容打印到控制台的 if 条件。有关更多信息,请参见:https ://www.w3schools.com/java/java_user_input.asp

编辑:

如果你想从一行解析多个整数,你可以这样做:

String[] arguments = scanner.nextLine().split(" ");
int[] ints = new int[arguments.length];
for (int i = 0; i < ints.length; i++) {
   ints[i] = Integer.parseInt(arguments[i]);
}

或者更高级的版本:

int[] ints = Arrays
   .stream(scanner.nextLine().split(""))
   .mapToInt(Integer::parseInt)
   .toArray();

推荐阅读