当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在for循环中打印这个变量?[副本]

卜瀚漠
2023-03-14
import java.util.*;

class test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        
        int[] incomes = new int[N];
        for (int i = 0; i < N; i++) {
            incomes[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(incomes));

        int[] taxes = new int[N];
        for (int i = 0; i < N; i++) {
            taxes[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(taxes));

        int[] payed = new int[N];

        for (int i = 0; i < N; i++) {
            payed[i] = incomes[i] * taxes[i];
        }
        System.out.println(Arrays.toString(payed));

        int max = payed[0];

        for (int i = 1; i < N; i++) {
            if (payed[i] > max) {
                max = payed[i];
                int count = i;
            }
        }
        System.out.println("Max is " + count);
    }
}

我可以打印最大罚款,但我不能打印计数。我看不出max和count之间的区别,也看不出为什么它不让我打印count。感谢任何帮助

共有1个答案

华修永
2023-03-14

count变量是在循环内部定义的。您需要在循环之前定义它,以便在循环之后可以访问它。

int count = 0;
for (int i = 1; i < N; i++) {
    if (payed[i] > max) {
        max = payed[i];
        count = i;
    }
}
System.out.println("Max is " + count);

此外,您可能需要count++而不是count=i;

 类似资料:
  • 问题内容: 通过测试我发现 这是不合法的: 但这是: 为什么? 问题答案: 第一种方法不合法,因为编译器很明显不能使用在那里声明的声明,因为在该循环中不能再包含其他语句。基本上,该位置的新变量声明将超出下一个语句的范围,因此没有任何用处。 在第二种情况下,循环后跟花括号,这创建了一个新的作用域,您可以使用该变量。

  • 问题内容: 我在程序中看到了与程序中此特定循环相关的不同行为,但我不确定我为什么理解它的行为方式。 的输出是 的输出是 我去网上看了以下内容 在切片上进行测距时,每次迭代都会返回两个值。第一个是索引,第二个是该索引处的元素的副本 它说一个副本,这是否意味着它返回了字符串的副本,但这实际上是指向变量的指针?在这种情况下,在循环结束时对will的任何引用都实际上引用了数组中的最后一个元素,例如?这是否

  • 问题内容: 我想做的是请用户输入一些字符串以读入数组,然后要求用户输入该数量的字符串并将其读入数组。当我运行此代码时,它从不要求我在第一个for循环的第一个循环中输入内容,只打印出“字符串#0:字符串#1:”,然后我就可以输入文本了。为什么会这样,我做错了什么? 问题答案: 缓冲。 输入输入数量时,不会在输入缓冲区中占用换行符的位置。在for循环的迭代0中,缓冲区中已经有一行输入,并且可以立即完成

  • 当我执行以下代码时,为什么分配给输出的变量名只在我第一次使用时打印......而不是每次使用时打印? 当我运行它时。。。这就是它看起来的样子 我的第一头渡渡鸟 我的第一段。 我的第二段。 我希望它看起来像这样 我的第一头渡渡鸟 我的第一段渡渡鸟 我的第二段。多多鸟

  • 当用户键入以下内容的答案时:system.out.println(“键入数字”); 它不会继续到我的代码的下一部分。

  • 在我的程序中,我发现当为时,循环无法正确退出。它看起来像整数溢出,远远大于10,循环不会停止。请告诉我发生了什么,以及如何在大型项目中避免这个错误。 代码链接