java 基础语法,提示最后一个i错误
问题描述:
package com.输出前三名;
import java.util.Arrays;
public class HelloWorld
{
//完成 main 方法
public static void main(String[] args)
{
int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73} ;//成绩数组
System.out.println("考试成绩前三名为:");
HelloWorld hello = new HelloWorld(); //创建对象,名为hello
hello.showTop3(scores); //调用方法,传入成绩数组
}
//定义方法完成成绩排序并输出前三名的功能
public void showTop3(int[] scores)
{
Arrays.sort(scores); //用Arrays.sort()方法实现数组排序
int num = 0 ; //保存有效成绩的数量
for(int i = scores.length - 1 ; i >=0 ; i--) //倒叙遍历数组中的每一个元素
{
if(scores[i] < 0 || scores[i] > 100) //判断成绩的有效性
continue ; //如果成绩无效,则跳出本次循环,忽略此成绩
}
num++ ; //有效成绩加一
if(num > 3) //判断有效成绩的数量
{
break ; //如果有效成绩大于3 ,则结束循环,只输出前三名的成绩
}
System.out.println(scores[i]); //一次输出前3名成绩
}
}
答
修改为以下的试试:
public void showTop3(int[] scores)
{
Arrays.sort(scores); //用Arrays.sort()方法实现数组排序
int num = 0 ; //保存有效成绩的数量
int i = 0; //**************************************
for(i = scores.length - 1 ; i >=0 ; i--) //倒叙遍历数组中的每一个元素
{
if(scores[i] < 0 || scores[i] > 100) //判断成绩的有效性
continue ; //如果成绩无效,则跳出本次循环,忽略此成绩
}
num++ ; //有效成绩加一
if(num > 3) //判断有效成绩的数量
{
break ; //如果有效成绩大于3 ,则结束循环,只输出前三名的成绩
}
System.out.println(scores[i]); //一次输出前3名成绩
}
答
因为真的没有定义i,for循环里申请的变量出循环就丢了。
答
变量i的作用域是在for循环里面,出了for循环i,就不起作用了。。。
答
public void showTop3(int[] scores)
{
Arrays.sort(scores); //用Arrays.sort()方法实现数组排序
int num = 0 ; //保存有效成绩的数量
for(int i = scores.length - 1 ; i >=0 ; i--) //倒叙遍历数组中的每一个元素
{
if(scores[i] < 0 || scores[i] > 100) //判断成绩的有效性
continue ; //如果成绩无效,则跳出本次循环,忽略此成绩
}
num++ ; //有效成绩加一
if(num > 3) //判断有效成绩的数量
{
break ; //如果有效成绩大于3 ,则结束循环,只输出前三名的成绩
}
System.out.println(scores[i]); //一次输出前3名成绩
}
不好意思,请问这个 num++有用吗 ?好像只加一次吧
答
for里定义的i 的作用域只是在for循环里面,出了for循环也就不能用了
答
public void showTop3(int[] scores)
{
Arrays.sort(scores); //用Arrays.sort()方法实现数组排序
int num = 0 ; //保存有效成绩的数量
for(int i = scores.length - 1 ; i >=0 ; i--) //倒叙遍历数组中的每一个元素
{
if(scores[i] < 0 || scores[i] > 100) //判断成绩的有效性
continue ; //如果成绩无效,则跳出本次循环,忽略此成绩
num++ ; //有效成绩加一
if(num > 3) //判断有效成绩的数量
{
break ; //如果有效成绩大于3 ,则结束循环,只输出前三名的成绩
}
System.out.println(scores[i]); //一次输出前3名成绩
}
}
答
你的for循环到这里就结束了
for(int i = scores.length - 1 ; i >=0 ; i--) //倒叙遍历数组中的每一个元素
{
if(scores[i] < 0 || scores[i] > 100) //判断成绩的有效性
continue ; //如果成绩无效,则跳出本次循环,忽略此成绩
}
答
for循环里边的变i,在循环外部无法使用!
答
i的定义在for循环里,在循环外就没有用了