为了账号安全,请及时绑定邮箱和手机立即绑定

大家进来帮我看看哪里出现了错误了,我输出的结果是全部输出了,不管怎么判断都是这样的,哪里的逻辑出现了错误了

/*
 要求:
1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73
2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入
3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩
*/
class Demo4 {
	public static void main(String[] args) {
		int[] scores = { 89, -23, 64, 91, 119, 52, 73 };
		print(scores);
	}

	public static void print(int[] arr) {
		for (int i = 0; i < arr.length; i++) {		//将数组的元素你从大到小排序
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[i] < arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		
		for (int i = 0; i < arr.length; i++) {
			int count=1;
			if( arr[i]<0 || arr[i] > 100 ){
				continue;
			}
			count++;
			if (count>3) {
				break;
			}
			
			System.out.println(arr[i]);	
			/*if (0 < arr[i] && arr[i] <= 100 ) {								
				System.out.println(arr[i]);				
				
				if (count>3) {
					break;
				}
				count++;
			}*/
		}
	}

}

我找到错误了,是我的计数器定义的位置错了,应该定义在for循环外边,我定义在for里边相当于我的计数器在每次循环的时候都是从零开始的

正在回答

3 回答

import java.util.Arrays;

public class HelloWorld {


    public static void main(String[] args) {

int[] scores={89,-23,64,91,119,52,73};

HelloWorld hello= new HelloWorld();

System.out.println("成绩前三名的是:");

hello.getScores(scores);

}

public void getScores(int[] scores)

{

Arrays.sort(scores);

int sum=0;

for (int i=scores.length-1;i>=0;i--)

{

if(scores[i]<0||scores[i]>100)

{

continue;

}

sum++;

if(sum>3)

{

break;

}

System.out.println(scores[i]);

}

}


}


    

    


0 回复 有任何疑惑可以回复我~

import java.util.Arrays;

public class All {

/*

*1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73


*2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入


*3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩

*/    

    //完成 main 方法

    public static void main(String[] args) {

    int[] scores={89,-23,64,91,119,52,73}; 

    All outscores=new All();

    outscores.three(scores);

    }   

    //定义方法完成成绩排序并输出前三名的功能

public void three(int[] scores){

Arrays.sort(scores);

int count=1;

for(int i=scores.length-1;i>=0;i--){

if(scores[i]<0 || scores[i]>100){

continue;

}

if(count<=3) {

System.out.println(scores[i]);

count++;

}

}

}

}

   

    

    

    


1 回复 有任何疑惑可以回复我~

没有说明你的问题

0 回复 有任何疑惑可以回复我~
#1

imooc_粉丝 提问者

不好意思,我给忘记了,按照题目的要求只需要输出前三名即可,我的结果却是把结果全部都输出来了,我找不出错误在哪
2016-11-04 回复 有任何疑惑可以回复我~
#2

imooc_粉丝 提问者

我找到问题了,我的计数器定义在for循环内了,相当于每次循环我的计数器都是从零开始计算的
2016-11-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大家进来帮我看看哪里出现了错误了,我输出的结果是全部输出了,不管怎么判断都是这样的,哪里的逻辑出现了错误了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信