1. ホーム
  2. java

[解決済み] error: 非互換の型。文字列はint型に変換できません

2022-02-16 20:16:19

質問

私はプログラミングの初心者で、Javaについても非常に初心者なので、この質問(そして私の他のすべての間違い)は、経験者の方にとっては非常に明白なことだと思います。私は明らかに自分が何をしているのか分かっていません。 私の課題は、PythonのコードをJavaに変換することでした。以下は私のコードです。

私のエラーコードは2つです。

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を使用していますが、そうでない場合もあります。

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

    
    }

}

解決方法は?

responseint というメソッドがあり nextLine()Scanner で表される線が返されます......。 String . を割り当てることはできません。 Stringint - はどのように行うのでしょうか?A String は何でもありです。 "some text" から " a 5 0 " . 1つ目および/または2つ目のものをどのように 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 などなど...。

しかし、1つの重大な問題に注意する必要があります。 nextLine()nextInt() は好ましくない結果につながる可能性があります。例えば

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

印刷する 何もない というのは、数字を入力するときに、たとえば 123 ヒット 入力 を入力すると、さらに改行文字が入力されます。すると nextLine() が発火し は、最初に遭遇する改行文字またはファイル終端文字までのすべての文字をスキャンします。 であるらしい。 まだある で消費されない。 nextInt() . これを修正し、さらに詳しく読むには こちら