【问题标题】:Resolving errors when trying to multiply integer arrays尝试将整数数组相乘时解决错误
【发布时间】:2015-11-11 02:21:36
【问题描述】:

问题出现在第一个 if 语句中,我收到错误消息“类型不匹配:无法从 double 转换为 String”,我真的不知道这里发生了什么,任何帮助将不胜感激。 导入 java.util.Scanner;

public class MarkmCalculator {


public static double[] modWeights = { 50, 40, 100, 50, 20, 35 };
public static String[] moduleResults = new String[6];
public static int[] moduleMarks = new int [6];
public static int[] courseworkMark = new int [6];
public static int[] examMark = new int [6];




public static void computemarks(){



    double modMark = 0.0;


            for (int i = 0; i < 6; i++) {

                if ((examMark[i] > 35) && (courseworkMark [i] > 35))
                {
                    moduleResults[i] = (courseworkMark[i]) * (modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]) / 100)
                }      

                    else {
                        moduleResults[i] = (((courseworkMark[i] * modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]))) / 100)
                    }
                            if { (moduleMarks < 35) 
                                moduleMarks = modMark;

                            else {
                                modMark = moduleMarks;
                            }

                        if (moduleMark > 40){
                            moduleMark = "Pass";
                        }   
                            else if ((moduleMark) <= 35 && (moduleMark) < 40){
                                moduleMark = "Compensatable Pass";
                            }

                            else{
                                moduleMark = "Fail"
                        }



                    }

                }



    public static void computeResult(){

        for (int i = 0; i < 6; i++)

            if 
    }









public static void main(String[] args) {

    computemarks(); 

}

}

【问题讨论】:

  • 请指出准确错误发生在哪一行。我认为在这种情况下你误解了类型是如何工作的——你不能在同一个变量中存储多个不同的类型。我建议对此进行审查。

标签: java arrays eclipse


【解决方案1】:

错误说明了一切。您不能将双精度数隐式转换为字符串。在这一行:

moduleResults[i] = (courseworkMark[i]) * (modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]) / 100);

您想将计算结果存储在一个字符串中。您需要转换为字符串。比如:

moduleResults[i] = ((courseworkMark[i]) * (modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]) / 100)) + "";

或者,将结果存储为双精度,将 moduleResults 更改为 double[]

【讨论】:

    【解决方案2】:

    moduleResults[i] 是一个字符串。 Java 不能将字符串隐式转换为双精度。请参阅Converting double to string 了解如何将双精度数转换为字符串。

    【讨论】:

      【解决方案3】:

      很多地方都会出现问题,我会一步一步尝试:

      public static double[] modWeights = { 50, 40, 100, 50, 20, 35 };
      public static String[] moduleResults = new String[6];
      public static int[] moduleMarks = new int [6];
      public static int[] courseworkMark = new int [6];
      public static int[] examMark = new int [6];
      

      除非必须 - 将 int 数组更改为双精度,然后改为:

      for (int i = 0; i < 6; i++) {
      
           if ((examMark[i] > 35) && (courseworkMark [i] > 35))
                  {
             moduleResults[i] = (courseworkMark[i]) * (modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]) / 100)
                  }      
             else {
           moduleResults[i] = (((courseworkMark[i] * modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]))) / 100)
                      }
      

      去:

      for (int i = 0; i < 6; i++) {
      
                          if ((examMark[i] > 35) && (courseworkMark [i] > 35))
                          {
                              moduleResults[i] = Double.toString((courseworkMark[i]) * (modWeights[i]) + (examMark[i] * (100 - modWeights[i]) / 100));
                          }      
      
                              else {
                                  moduleResults[i] = Double.toString((((courseworkMark[i] * modWeights[i]) + (examMark[i] * (100 - modWeights[i]))) / 100));
                              }
      

      我不知道在任务中必须做什么,但是 - moduleResults[i] = (courseworkMark[i]) * (modWeights[i]) + (examMark[6 + i] * (100 - modWeights[i]) / 100) 会给你 ArrayIndexOutOfBounds 例外,因为 examMark[6 + i]

      还有:

      if { (moduleMarks < 35) 
                                  moduleMarks = modMark;
      
                              else {
                                  modMark = moduleMarks;
                              }
      

      ModuleMarks 是一个数组,所以你不能像这样在if 语句中比较它,尤其是不能与if 之后的{ 进行比较,也许是这样?:

      if (moduleMarks[i] < 35) 
                                          moduleMarks[i] = modMark;
      
                                      else {
                                          modMark = moduleMarks[i];
                                      }
      

      另外,您正在尝试将 String 放入 Double 数组中:

       if (moduleMark > 40){
                              moduleMark = "Pass";
                          }   
                              else if ((moduleMark) <= 35 && (moduleMark) < 40){
                                  moduleMark = "Compensatable Pass";
                              }
      
                              else{
                                  moduleMark = "Fail"
                          }
      

      我认为必须进入String[] moduleResults

       if (moduleMarks[i] > 40){
                                      moduleResults[i] = "Pass";
                                  }   
                                      else if ((moduleMarks[i]) <= 35 && (moduleMarks[i]) < 40){
                                          moduleResults[i]= "Compensatable Pass";
                                      }
      
                                      else{
                                          moduleResults[i] = "Fail";
                                  }
      

      希望对你有所帮助。

      编辑这将至少修复语法错误 - 后勤工作由您决定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多