关于#java#的问题:用System.in来为一个数组输入一写整数,为什么System.in要写在for循环外面,类似下面这串代码

在java里面,用System.in来为一个数组输入一写整数,利用了for循环,为什么System.in要写在for循环外面,类似下面这串代码,求解答,我自己是觉得要写在for循环里面

import java.awt.*;
import java.swing.*;
import java.util.*;

public class Max_and_Min extends JFrame{
    
    
    public static void main(String args[]){
        int[] a = new int[10];
        int n=0 ,m=0;
        Scanner s = new Scanner(System.in);
        System.out.println("Please imput ten num :");
        for(int i=0; i<a.length; i++){
            a[i] = s.nextInt();
        }
        s.close();
        for(int i=1; i<a.length; i++){
            if(a[n] < a[i]){
                n = i;
            }
        }
        for(int i=1; i<a.length; i++){
            if(a[m] > a[i]){
                m = i;
            }
        }
        System.out.println("***  The max num is :" + a[n] + "  ***");
        System.out.println("***  The min num is :" + a[m] + "  ***");
    }
}

不对,写在外面你的Scanner就只创建了一次,你写在里面一次循环就就创建一次,那你的s每次只存一个字符

【以下回答由 GPT 生成】

问题回答:

这段代码使用了System.inScanner来实现从控制台输入整数,并将其存储在一个数组中。System.in代表标准输入流,它是一个字节流,可以从控制台读取输入。而Scanner是一个用于扫描输入流的类,它提供了方便的方法来读取不同类型的数据。

在这段代码中,System.in重要的作用是传递给Scanner的构造函数,作为扫描的输入流参数。通过将System.in传递给Scanner,我们可以使用Scanner对象s来从控制台读取输入。

将代码Scanner s = new Scanner(System.in)放在for循环之外的原因有两个:

  1. 为了避免在每次迭代时都创建一个新的Scanner对象,这样可以提高性能。如果我们将Scanner s定义在for循环内部,那么每次循环迭代时都会创建一个新的Scanner对象,这是不必要的。

  2. 为了保证可以读取完整的输入。如果我们将Scanner对象放在for循环内部,并在每次迭代后将其关闭,那么在第二次迭代时将无法读取输入,因为System.in已经关闭了。所以,我们将Scanner s定义在for循环之外,以确保在整个for循环执行期间都可以使用它来读取输入。

下面是一个示例代码来说明以上解释:

import java.util.Scanner;

public class ArrayInputExample {

    public static void main(String[] args) {
        int[] a = new int[10];
        int n = 0, m = 0;
        Scanner s = new Scanner(System.in);

        System.out.println("Please input ten numbers: ");

        for (int i = 0; i < a.length; i++) {
            a[i] = s.nextInt();
        }

        s.close();

        for (int i = 1; i < a.length; i++) {
            if (a[n] < a[i]) {
                n = i;
            }
        }

        for (int i = 1; i < a.length; i++) {
            if (a[m] > a[i]) {
                m = i;
            }
        }

        System.out.println("***  The maximum number is: " + a[n] + "  ***");
        System.out.println("***  The minimum number is: " + a[m] + "  ***");
    }
}

以上示例代码将可以从控制台输入10个整数,然后分别找出最大和最小的数,并打印到控制台上。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^