注册 登录
编程论坛 JAVA论坛

两个for 循环嵌套出问题,总是在自己不需要的情况下跳转到第一个循环

lihuahao哈 发布于 2019-04-13 11:45, 2269 次点击
package homeworks1;
import java.util.Scanner;
//本代码是为了输出一串不重复的数字,另附个人调试图
public class test {
    public static void main(String[] args) {
        int k=0;int[] number=new int[5];
        Scanner input=new Scanner(System.in);[
        for(int i=0;i<number.length;i++) {
            System.out.println("输入第"+(i+1)+"个数");
            number[i]=input.nextInt();                    
            for(int j=i;j>0;j--) {
                k=number[i];
                if(k==number[j-1]) {
                    System.out.println("数字重复,重新输入");
                    number[i]=input.nextInt();   
                    j=i;                    
                }   
            }   
        }   
        System.out.println("已输入数字为:");
        for (int i = 0; i < number.length; i++) {            
            System.out.print(number[i]+"  ");
        }
    }   
}
只有本站会员才能查看附件,请 登录
3 回复
#2
lihuahao哈2019-04-13 11:47
找了好久都没发现错在哪里,求大神回答!

[此贴子已经被作者于2019-4-13 15:14编辑过]

#3
rind2019-04-13 18:19
内层逻辑有点问题,不是跳转到外层。
首先确保输入没有重复,有重复的需要从头(j=i-1)开始比较。
依次输入
1 1 1 2 2 2  3 3 3  4 5 6
看输出吧。

程序代码:
import java.util.Scanner;

//本代码是为了输出一串不重复的数字,另附个人调试图
public class test {
    public static void main(String[] args) {
        int k = 0;
        int[] number = new int[5];
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < number.length; i++) {
            System.out.println("输入第" + (i + 1) + "个数");
            number[i] = input.nextInt();
            for (int j = i; j > 0; j--) {
                k = number[i];
                if (k == number[j - 1]) {
                    System.out.println("数字重复,重新输入");
                    number[i] = input.nextInt();
                    j = i + 1;  //j被赋值后,接着j--,然后再-1所以完美避过j=i-1的情况。
                }
            }
        }
        System.out.println("已输入数字为:");
        for (int i = 0; i < number.length; i++) {
            System.out.print(number[i] + "  ");
        }
    }
}




[此贴子已经被作者于2019-4-13 18:21编辑过]

#4
lihuahao哈2019-04-13 18:49
回复 3楼 rind
感谢你,问题解决了,我懂了
1