首页 > 解决方案 > 如何重写 for 循环以将字符串更改为 int/double?

问题描述

我正在为学校写java,来自用户输入的最低和最高整数(从字符串更改)。由于第 36-39 行的“二元运算符'>'的操作数类型错误”和“不兼容的类型:字符串无法转换为双精度”,我无法编译它(该类有一些奇怪的东西)

public class average2{

// accept string args
public static void main( String[] args ){

    //initialize variables 
    double x = 0;
    double temp = 0;
    double sum = 0;
    double avg = 0;
    double highest = 0;
    double lowest = 0;

    System.out.print("java average ");
    for(String arg:args){
        System.out.print(arg);
        System.out.print(" ");
        //x = Double.parseDouble(args[ i ]);

    }

        System.out.println("");
        System.out.println("Welcome to the Average Program. It is rather average.");

        // add numbers
        for( int i = 0; i< args.length; i++ ){      
            // convert string to either double or int 
            x = Double.parseDouble(args[ i ]);
            temp = ( x + sum);
            sum = temp; 
        }

        //find highest value
        for( int i = 1; i< args.length; i++ ){
            x = Double.parseDouble(args[ i ]);
            if(args[i] > highest)
                highest = args[i];
            else if(args[i] < lowest)
                lowest = args[i];
            //display answer
            System.out.println( "The highest given value: " + highest);
            System.out.println( "The lowest given value: " + lowest);
        }   

        if ( args.length > 0 ){

            // do math add numbers divide by length
            avg = sum / args.length;

            // display answer
            System.out.println( "The average is: " + avg);
        }

            // test for null input
        else if( args.length == 0 ){
            System.out.println( "Usage java average X (where X is a list of integers) ");
        }
}   
}

标签: java

解决方案


在这里,您将字符串解析为双精度:

x = Double.parseDouble(args[ i ]);

但是,在下一行,您尝试将字符串与数字进行比较:

if(args[i] > highest)

改为使用x

if(x > highest)

推荐阅读