Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:不兼容的类型:可能从double到int的有损转换。java课程i';我在做什么_Java - Fatal编程技术网

错误:不兼容的类型:可能从double到int的有损转换。java课程i';我在做什么

错误:不兼容的类型:可能从double到int的有损转换。java课程i';我在做什么,java,Java,我的Java课程有这个任务,但不断地出现这个错误,不知道哪里出了问题。 代码如下: import java.util.Scanner; public class ArraySum { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double[] values = new double[4]; for (do

我的Java课程有这个任务,但不断地出现这个错误,不知道哪里出了问题。 代码如下:

import java.util.Scanner;

public class ArraySum {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        double[] values = new double[4];
        
        for (double i = 0; i < values.length; i++) {
            System.out.print("Enter a number: ");
            values[i] = sc.nextInt();
        }
    
        double sum = (values[0] + values[1] + values[2] + values[3]);
        
        System.out.println("The sum is " + sum + ".");

        sc.close(); 
    }
}
import java.util.Scanner;
公共类数组{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
double[]值=新的double[4];
for(双i=0;i
关于你在评论中提到的例外情况

Exception in thread "main" java.util.InputMismatchException 
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258) 
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212) 
    at ArraySum.main(ArraySum.java:12) 
这是因为您使用的是
nextInt
而不是
nextDouble
,因此当您使用十进制分隔符输入值时,
Scanner
会抛出错误,因为它无法将输入解释为整数

这是完整的工作代码

import java.util.Scanner;

public class ArraySum {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        double[] values = new double[4];
        
        for (int i = 0; i < values.length; i++) {
            System.out.print("Enter a number: ");
            values[i] = sc.nextDouble();
        }
    
        double sum = (values[0] + values[1] + values[2] + values[3]);
        
        System.out.println("The sum is " + sum + ".");

        sc.close(); 
    }
}
import java.util.Scanner;
公共类数组{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
double[]值=新的double[4];
对于(int i=0;i
for(double i=0;i
为什么
i
应该是
double
?这会在以后将其用作数组的索引时产生问题,从而将其转换为
int
并导致错误。此外,还可以通过
sc.nextInt()
你永远不会读一个
双精度
,只读一个
整数
。那么为什么不使用呢?当我尝试将它作为一个整数时,我在输入带有小数的数字时出错。另外,你不需要数组本身来找到和。你可以只做
sum+=sc.nextDouble()
@WogChamp你尝试作为整数的“it”是什么?
Exception in thread "main" java.util.InputMismatchException 
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258) 
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212) 
    at ArraySum.main(ArraySum.java:12) 
import java.util.Scanner;

public class ArraySum {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        double[] values = new double[4];
        
        for (int i = 0; i < values.length; i++) {
            System.out.print("Enter a number: ");
            values[i] = sc.nextDouble();
        }
    
        double sum = (values[0] + values[1] + values[2] + values[3]);
        
        System.out.println("The sum is " + sum + ".");

        sc.close(); 
    }
}