Java 错误:不兼容的类型:无法将字符串转换为int
我对编程非常陌生,对Java也非常陌生,所以我相信这个问题(以及我所有的其他错误)对任何有经验的人来说都是非常明显的。我显然不知道我在做什么。 我的任务是将Python代码转换为Java。下面是我的代码 我的两个错误代码是:Java 错误:不兼容的类型:无法将字符串转换为int,java,Java,我对编程非常陌生,对Java也非常陌生,所以我相信这个问题(以及我所有的其他错误)对任何有经验的人来说都是非常明显的。我显然不知道我在做什么。 我的任务是将Python代码转换为Java。下面是我的代码 我的两个错误代码是: Assignment1.java:37: error: incompatible types: String cannot be converted to int response = reader.nextLine(); Assignment1.java:38: err
Assignment1.java:37: error: incompatible types: String cannot be
converted to int
response = reader.nextLine();
Assignment1.java:38: error: incompatible types: int cannot be converted to String
num = Integer.parseInt(response);
为了澄清,我正在使用JGrasp,但不愿意
谢谢你的帮助。
~JBOrunon
import java.util.Scanner;
public class Assignment1 {
public static void main(String[] args) {
int num, response, min, max, range, sum, count, avg;
Scanner reader = new Scanner(System.in);
String reportTitle;
//title
System.out.println();
System.out.println("Enter a title for this report");
reportTitle = reader.nextLine();
System.out.println();
//data input
System.out.println("Enter a series of numebr, ending with a 0");
num = 0;
sum = 0;
response = 1;
count = 0;
max = 0;
min = 0;
range = 0;
while (true)
{
if (response < 1)
{
System.out.println("End of Data");
break;
}
System.out.println("Enter number => ");
response = reader.nextLine();
num = Integer.parseInt(response);
sum += num;
count += 1;
if (num>max)
{
max = num;
}
if (num<min)
{
min = num;
}
}
//crunch
avg = sum / count;
range = max - min;
//report
System.out.println();
System.out.println(reportTitle);
System.out.println();
System.out.println("Sum: => "+sum);
System.out.println("Average: => "+avg);
System.out.println("Smallest: => "+min);
System.out.println("Largest: => "+max);
System.out.println("Range: => "+range);
}
}
import java.util.Scanner;
公共课堂作业1{
公共静态void main(字符串[]args){
int num,response,min,max,range,sum,count,avg;
扫描仪阅读器=新扫描仪(System.in);
字符串报告标题;
//头衔
System.out.println();
System.out.println(“输入此报告的标题”);
reportTitle=reader.nextLine();
System.out.println();
//数据输入
System.out.println(“输入一系列numebr,以0结尾”);
num=0;
总和=0;
响应=1;
计数=0;
max=0;
最小值=0;
范围=0;
while(true)
{
如果(响应<1)
{
System.out.println(“数据结束”);
打破
}
System.out.println(“输入数字=>”;
response=reader.nextLine();
num=Integer.parseInt(响应);
sum+=num;
计数+=1;
如果(数值>最大值)
{
max=num;
}
如果(numresponse
是一个int
,并且Scanner
的方法nextLine()
返回…那么,一行由字符串
表示。您不能将字符串分配给int
-您会怎么做?一个字符串可以是某些文本中的任何内容
转换为“a 5 0”
。如何将第一个和/或第二个转换为int
您可能想要的是:
System.out.println("Enter number => ");
response = reader.nextInt();
// notice this ^^^
而不是:
System.out.println("Enter number => ");
response = reader.nextLine();
// instead of this ^^^^
nextInt()
方法需要一系列可以表示数字的数字和/或字符,例如:123
、-50
、0
等等
但是,您必须注意一个重要问题—混合使用nextLine()
和nextInt()
可能会导致不希望的结果。例如:
Scanner sc = new Scanner(System.in);
String s;
int a = sc.nextInt();
s = sc.nextLine();
System.out.println(s);
将打印无,因为在输入数字时,您键入例如123
,点击enter,您将另外输入一个换行符。然后,nextLine()
将触发并扫描每个字符,直到第一个未加载的换行符或文件结尾字符,该字符显然仍在那里,未被nextInt()
使用。若要修复此问题并了解更多信息,请转到从文件中读取整数,您只需使用以下示例:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
但是,您没有提供有关文件结构的更多信息,因此我的建议是再次查看文档,以找到最适合您的内容。
你可以找到扫描器的文档。响应
是一个int
和扫描器。nextLine()
返回一个字符串
。你如何将包含的行转换为int
。这是因为“reader.nextLine()”返回字符串,您正试图将其分配给int类型的变量,这是不可能的。因此,请将响应的数据类型更改为String。因此@Amit1011对于我应该使用什么来代替reader.nextLine()
所以它将返回一个int?响应
应该只是一个数字,如果全部都是数字well@JohannBoniek执行此操作-response=Integer.parseInt(reader.nextLine());
。但是要注意,如果这里有人输入任何字符而不是数字,您将收到NumberFormatException。这是一个非常有用的回答,谢谢。既然您帮了很多忙:您刚才提到我收到另一个错误的原因吗?赋值1.java:38:错误:不兼容的类型:int无法转换d to String num=Integer.parseInt(response);
类似,但完全相同。请注意,response
是一个int
和Integer.parseInt()
需要一个String
作为参数,而不是int
。因此,调用Integer.parseInt(response)
会导致编译错误,因为您无法将int
传递给该方法。如果您应用我的答案中建议的更改,您可以删除第38行,因为您已经阅读了int
,并且不需要parsing@JohannBoniek如果你的问题解决了,你可以考虑接受这个答案。至少可能会遇到与此解决方案工作相同的问题