"type mismatch: cannot convert from int to byte"

"type mismatch: cannot convert from int to byte"

Java 的新手,到目前为止一直在苦苦挣扎.. 昨天一整天都在尝试修复此错误,但无济于事...任何帮助将不胜感激。

import java.util.Random;
import java.util.Date;
class Proj06{
  public static void main(String[] args){
    Random generator = null;
    if(args.length != 0){
      generator = new Random(Long.parseLong(args[0]));
    }else{
      generator = new Random(new Date().getTime());
    };
    
    //Get and save positive random number of type int.
    int valA = Math.abs((generator.nextInt()))/67000 + 1024;
    
    Proj06Runner obj = new Proj06Runner();

    String valB = obj.run("certificaton");
    String valC = obj.run(1,"name");
    byte valD =   obj.run(valA);

    //Print the original random integer
    System.out.println(valA);
    
    //Print the three values returned from the three calls
    // to the run method.
    System.out.println(valB);
    System.out.println(valC);
    System.out.println(valD);
    
    //Print the original random integer after casting it
    // down to type byte.
    //System.out.println((byte)valA);

  }//end main

public class Proj06Runner extends Proj06{
  public int run(int valA){
    return valA;
  }
  public String run(String valB){
    return "this works";
  }
  public String run(int i, String valC){
    return "this also works";
  }
//this does not work 
  public byte run(byte valD){
    return valD;
  }

}

我无法更改 main 中的任何内容..我知道 valA 是 int 的方式有误,但我将其分配给字节变量

您的 Proj06Runner class 有以下两种方法:

  public int run(int valA){
    return valA;
  }
  public byte run(byte valD){
    return valD;
  }

第一个 int 和 returns int。第二个需要一个byte和returns一个byte。您正在呼叫第一个。我怀疑您希望调用第二个,但这不会起作用,因为 main 方法将 int 作为参数传递。

修复编译器错误的一种方法是将这两种方法“合并”为一个采用 int 和 returns 和 byte 的方法。例如:

  public byte run(int valD){
    return (byte) valD;
  }