| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 420 人关注过本帖
标题:两个for 循环嵌套出问题,总是在自己不需要的情况下跳转到第一个循环
只看楼主 加入收藏
lihuahao哈
Rank: 2
等 级:论坛游民
威 望:1
帖 子:22
专家分:39
注 册:2018-11-17
结帖率:100%
  问题点数:0  回复次数:3   
两个for 循环嵌套出问题,总是在自己不需要的情况下跳转到第一个循环
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]+"  ");
        }
    }   
}
附件: 您没有浏览附件的权限,请 登录注册
2019-04-13 11:45
lihuahao哈
Rank: 2
等 级:论坛游民
威 望:1
帖 子:22
专家分:39
注 册:2018-11-17
  得分:0 
找了好久都没发现错在哪里,求大神回答!

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


学习编程有没有用,你不学怎么知道呢?
2019-04-13 11:47
rind
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:49
专家分:328
注 册:2018-3-8
  得分:0 
内层逻辑有点问题,不是跳转到外层。
首先确保输入没有重复,有重复的需要从头(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编辑过]


仅供参考,欢迎指正
2019-04-13 18:19
lihuahao哈
Rank: 2
等 级:论坛游民
威 望:1
帖 子:22
专家分:39
注 册:2018-11-17
  得分:0 
回复 3楼 rind
感谢你,问题解决了,我懂了

学习编程有没有用,你不学怎么知道呢?
2019-04-13 18:49







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025823 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved