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

时间:2018-01-19 19:08:15

标签: java

我对编程非常陌生,对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);


    }

}

2 个答案:

答案 0 :(得分:1)

要从文件中读取整数,您只需使用如下示例:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

但是,您没有提供有关文件结构的更多信息,因此我的建议是再次查看文档以找到最适合您的文档。 您可以找到扫描仪here的文档。

答案 1 :(得分:0)

responseintnextLine()的方法Scanner会返回......好吧,一行由 String 。您无法将String分配给int - 您将如何执行此操作? String可以是"some text"" 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-500等等。

但是,您必须注意一个重要问题 - 混合nextLine()nextInt()会导致不良后果。例如:

Scanner sc = new Scanner(System.in);
String s;
int a = sc.nextInt();
s = sc.nextLine();
System.out.println(s);

将打印,因为在输入数字时,您输入例如123点击输入 ,您还要输入换行符。然后,nextLine()将会触发,将扫描每个角色,直到第一个发现的换行符或文件结束符,显然仍然存在,未被{ {1}}。要解决此问题并阅读更多相关信息,请转到here