Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误:不兼容的类型:无法将字符串转换为int_Java - Fatal编程技术网

Java 错误:不兼容的类型:无法将字符串转换为int

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

我对编程非常陌生,对Java也非常陌生,所以我相信这个问题(以及我所有的其他错误)对任何有经验的人来说都是非常明显的。我显然不知道我在做什么。 我的任务是将Python代码转换为Java。下面是我的代码

我的两个错误代码是:

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;
}

如果(num
response
是一个
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如果你的问题解决了,你可以考虑接受这个答案。至少可能会遇到与此解决方案工作相同的问题