Java 实现字符的输入与输出

我的代码运行了,输入了字符串,但是打印的字符串,居然是所有输入的字符串,为什么没有分别存入三个字符数组。

package test;
import java.util.Scanner;
public class max {

    public static void main(String args[]){
        try
        {
            
            @SuppressWarnings("resource")
            Scanner sc= new Scanner(System.in);
            System.out.println("请输入三个字符串");
            String []arr1 = new String [5];
            String []arr2 = new String [5];
            String []arr3 = new String [5];
            for(int i=0;i<5;i++)
            {
                arr1[i]=sc.nextLine();
                 
            }
            for(int i=0;i<5;i++)
            {
                arr2[i]=sc.nextLine();
                 
            }
            for(int i=0;i<5;i++)
            {
                arr3[i]=sc.nextLine();
                 
            }
            for(int i=0;i<5;i++ )
            System.out.println(arr1[i]);
        }
            
        catch(Exception e)
        {
            System.out.println("对不起");
        }
           }
}


我的运行窗口:

img

我不理解,怎么输入完了三行字符串,还要按很多个回车键才可以输入,一点都不熟悉这个语法。

字符串的申明直接用String就可以,String[] 申明的是字符串数组,你写了三个循环,每个循环5次,所以一共需要输入15行数据,正确的写法应该是下面这两种吧。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Max {
 
    public static void main(String args[]){
        try
        {
            
            @SuppressWarnings("resource")
            Scanner sc= new Scanner(System.in);
            System.out.println("请输入三个字符串");
            List<String> stringList = new ArrayList<>();
            for(int i=0;i<3;i++) {
                stringList.add(sc.nextLine());
            }
            for(String str:stringList) {
                System.out.println(str);
            }
        }
        catch(Exception e)
        {
            System.out.println("对不起");
        }
           }
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Max {
 
    public static void main(String args[]){
        try
        {
            
            @SuppressWarnings("resource")
            Scanner sc= new Scanner(System.in);
            System.out.println("请输入三个字符串");
            char[][] arr = new char[3][];
            for (int i = 0; i < 3; i++) {
                arr[i] = sc.nextLine().toCharArray();
            }
            for (char[] c : arr) {
                System.out.println(c);
            }
        }
        catch(Exception e)
        {
            System.out.println("对不起");
        }
           }
}


sc.nextLine()就是获取一次输入,你循环了3个5次,因此获取了15次输入,另外字符数组是char[],String[]是字符串数组。你想要的结果应该是类似于下面这样吧?

    public static void main(String[] args) {
        try {
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);

            System.out.println("请输入三个字符串");
            int n = 3;
            char[][] arr = new char[n][];
            for (int i = 0; i < n; i++) {
                arr[i] = sc.nextLine().toCharArray();
            }
            for (char[] c : arr) {
                System.out.println(Arrays.toString(c));
            }
        } catch (Exception e) {
            System.out.println("对不起");
        }
    }

String []arr1 = new String [5] 这么定义的话就变成是一个有5个字符串的数组。
变成你一共要输入15个字符串。
nextLine会把回车之前的当成一个字符串,而前面的只输入了3个字符串,它一直在等你输入剩下的字符串,所以要按多次回车,让它接收完。