为什么forj没有输出,案例:从键盘输入本组学员的人数,和本组学员的姓名,用数组存储姓名,然后再从键盘输入一个姓名,查找它是否在之前的数组中,如果存在,就显示它的下标


package D3;

import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("length");
        int lenGth = scanner.nextInt();//数组长度
        String[] ints = new String[lenGth];//存储姓名
        for (int i = 0; i < ints.length; i++) {
            System.out.println("name");
            String name = scanner.next();
            for (int j = i; j < ints.length; j++) {
                if (name == ints[j]) {
                    System.out.println("%%%" + j);
                }
            }
            ints[i] = name;
            for (int j = 0; j < ints.length; j++) {
                System.out.println(ints[j]);
            }
        }

    }
}

我这边跑for j一直输出呀
你这逻辑似乎有点问题,你每次都是从i之后检测的,也就是说后面输入的部分不会和前面的部分比较,所以一直不会有相等的情况出现,也就是说for i理论上不会有输出

package com.csdn;


import java.util.Objects;
import java.util.Scanner;

public class q7504016 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("length");
        boolean flag;
        int lenGth = scanner.nextInt();//数组长度
        String[] ints = new String[lenGth];//存储姓名
        System.out.println(ints.length);
        for (int i = 0; i < ints.length; ) {
            System.out.println("name");
            String name = scanner.next();
            flag = true;
            for (int j = 0; j < i; j++) {
                if (Objects.equals(name, ints[j])) {
                    System.out.println("%%%" + j);
                    flag = false;
                }
            }
            if (flag) {
                ints[i] = name;
                for (String anInt : ints) {
                    System.out.println(anInt);
                }
                i++;
            }
        }
    }
}

稍微魔改了一下,现在大概和你说的功能差不多

img

有疑问可以再交流,有帮助,望采纳

第二个for里面 ints[j] 应该是 恒为null的,因为是比较了后才赋值的