package STU; import java.lang.Number; public class Test { public static void main(String[] args) { int num = 3; Number x = num; System.out.println(x.intValue()); System.out.println(x.compareTo(4)); } }compareTo语句报错
时间: 2024-03-03 17:49:35 浏览: 63
在Java 9及以上版本中,`Number`类中的`compareTo()`方法被修改为泛型方法,它的参数类型应该是`Number`或其子类,而不再是`Object`类型。因此,在比较时,应该使用`Integer`对象而不是`int`类型的原始值。
修改后的代码如下:
```
package STU;
import java.lang.Number;
public class Test {
public static void main(String[] args) {
Integer num = 3;
Number x = num;
System.out.println(x.intValue());
System.out.println(x.compareTo(new Integer(4)));
}
}
```
这个代码不仅可以在Java 9及以上版本中编译和运行,而且也可以在之前的版本中编译和运行。
相关问题
package STU; import java.lang.Number; public class Test { public static void main(String[] args) { Number x =(Number) new Integer(3); System.out.println(x.intValue()); System.out.println(x.compareTo(new Integer(4))); } }仍然报错
在Java 9及以上版本中,即使进行强制类型转换,也会出现编译错误,错误信息和之前一样。这是因为Java 9中对类型转换的规则进行了更改,不再允许从一个子类类型转换到其父类类型,除非这个子类类型是可重复的。而`Integer`类不是可重复的,因此无法进行类型转换。
解决这个问题的方法是使用`intValue()`方法将`Integer`类型的对象转换为`int`类型的原始值,然后再将其赋值给`Number`类型的变量。修改后的代码如下:
```
package STU;
import java.lang.Number;
public class Test {
public static void main(String[] args) {
int num = 3;
Number x = num;
System.out.println(x.intValue());
System.out.println(x.compareTo(4));
}
}
```
这个代码不仅可以在Java 9及以上版本中编译和运行,而且也可以在之前的版本中编译和运行。
package srsc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class Srsc { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String filePath = "D:\\test.txt"; BufferedWriter bw = new BufferedWriter(new FileWriter(filePath)); Scanner scanner = new Scanner(System.in); String name = scanner.next(); String gender = scanner.next(); int age = scanner.nextInt(); Student stu = new Student(name, gender, age); bw.write(stu.toString()); bw.newLine(); BufferedReader br = new BufferedReader(new FileReader(filePath)); String rline; while((rline = br.readLine()) != null) { System.out.println(rline); } bw.close(); br.close(); scanner.close(); } }为什么没有输出到控制台
这是因为在程序中没有使用 `System.out.println()` 或 `System.out.print()` 方法将文本输出到控制台。在程序中,您已经将学生信息写入了文件,并在文件中读取了该信息,但是您需要使用 `System.out.println()` 或 `System.out.print()` 方法将其输出到控制台。
您可以在 `while` 循环中添加以下代码:
```
while((rline = br.readLine()) != null) {
System.out.println(rline); // 将每一行的文本输出到控制台
}
```
这样就可以将文件中的信息输出到控制台了。
阅读全文