尝试用java打印数组

gopyfrb3  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(295)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我有一个需要提交的代码,每次尝试运行它时,都会一次又一次地出现相同的错误。
问题来了
编写以下java方法:
(a) 是的。readvalues从文本文件“values.txt”将十个整数值输入到整数数组选项卡中。此数组选项卡作为参数传递给方法。假设文件中的学生数等于数组的长度。
(b) 是的。oddvalues,它将数组tab作为参数,并返回在tab中找到的奇数值的数目。
(c) 是的。以数组选项卡作为参数的replaceodd。它应该用所有奇数之和替换tab中的每个奇数值。
提示:您的方法必须首先计算所有奇数值的和。
(d) 是的。printvalues,它将数组选项卡作为参数并在屏幕上打印其内容。
(e) 是的。main声明数组选项卡并调用上述四个方法。
n、 b:在你的程序中,使用上面提到的方法和变量名。
代码如下:

import java.util.*;
import java.io.*;

public class Finalexam
{
    public static void main (String [] args ) throws FileNotFoundException 
{
    int sum=0;
    int [] TAB=new int [10];
    ReadValues(TAB);
    oddValues(TAB);
    replaceOdd(TAB);
    printValues(TAB);

    System.out.println("The sum is" + sum);

}
public static void ReadValues (int [] TAB)
{
 {   int i;
    for(i=0; i<10; i++){
     Scanner s = new Scanner ("Values.txt") ;
     TAB[i]=s.nextInt();
    }
}
    s.close();
}
public static double oddValues(int[] TAB)
{
    int i;
    double odd=0;
    int fn=0;
    for(i=1; i<odd; i++){

    while(odd % 2 !=0)
        {
            odd = fn;
        }
        break;
    }
    return fn;
}

public static int replaceOdd(int[] TAB)
{
    int re=0;
    for(int i=0; i<TAB.length; i++){
        re = re/TAB.length;
    }
    return re;
}
public static void printValues(int[] TAB)
{
    int i;
    for(i=0; i<10; i++){
        System.out.println(TAB[i]+"\t");
    }
    System.out.println();
}
}

在哪一部分我做错了?我都跑不动了。

nzrxty8p

nzrxty8p1#

首先,代码中有一个编译错误。
用你的方法

public static void ReadValues (int [] TAB)
    {
        {   int i;
            for(i=0; i<10; i++){
                Scanner s = new Scanner ("Values.txt") ;
                TAB[i]=s.nextInt();
            }
        }
        s.close();
    }

你有太多额外的方括号,这不是问题所在,问题是scanner对象s在for循环内声明,当你稍后在循环外关闭它时,因为变量的作用域不在循环外,所以出现了错误。
正确的方法应该是

public static void readValues (int [] tab){
        int i;
        Scanner s = new Scanner ("Values.txt") ;
        for(i=0; i<10; i++){
                tab[i]=s.nextInt();
        }
        s.close();
}

还有很多东西可以在你的代码中工作,但是这是一个不好的实践或者没有遵循约定。
变量名(例如tab)应始终采用驼色大小写。只有当它是一个常量时,它才应该是一个大写字母,这在你的例子中是不存在的。
方法名以小写字母开头。
您也在调用这两种方法 replaceOdd(TAB) 以及 oddValues(TAB) 但是返回值没有在任何地方使用。
永远不会抛出filenotfoundexception
如果你仔细看看下面这个方法

public static double oddValues(int[] TAB) {
    int i;
    double odd = 0;
    int fn = 0;
    for (i = 1; i < odd; i++) {

        while (odd % 2 != 0) {
            odd = fn;
        }
        break;
    }
    return fn;
}

循环永远不会作为 odd0 所以我永远都是假的。奇数的逻辑也是错误的。

public static int replaceOdd(int[] TAB){
    int re=0;
    for(int i=0; i<TAB.length; i++){
        re = re/TAB.length;
    }
    return re;
}

这种方法总是返回零,逻辑是错误的。
还有更多的逻辑错误。我建议你也调查一下

相关问题