Error incompatible types string cannot be converted to int

The Java incompatible types error happens when a value assigned to a variable or returned by a method is incompatible with the one declared.

Introduction to Data Types & Type Conversion

Variables are memory containers used to store information. In Java, every variable has a data type and stores a value of that type. Data types, or types for short, are divided into two categories: primitive and non-primitive. There are eight primitive types in Java: byte, short, int, long, float, double, boolean and char. These built-in types describe variables that store single values of a predefined format and size. Non-primitive types, also known as reference types, hold references to objects stored somewhere in memory. The number of reference types is unlimited, as they are user-defined. A few reference types are already baked into the language and include String, as well as wrapper classes for all primitive types, like Integer for int and Boolean for boolean. All reference types are subclasses of java.lang.Object [1].

In programming, it is commonplace to convert certain data types to others in order to allow for the storing, processing, and exchanging of data between different modules, components, libraries, APIs, etc. Java is a statically typed language, and as such has certain rules and constraints in regard to working with types. While it is possible to convert to and from certain types with relative ease, like converting a char to an int and vice versa with type casting [2], it is not very straightforward to convert between other types, such as between certain primitive and reference types, like converting a String to an int, or one user-defined type to another. In fact, many of these cases would be indicative of a logical error and require careful consideration as to what is being converted and how, or whether the conversion is warranted in the first place. Aside from type casting, another common mechanism for performing type conversion is parsing [3], and Java has some predefined methods for performing this operation on built-in types.

double myDouble = 9; // Automatic casting (int to double)
int myInt = (int) 9.87d; // Manual casting (double to int)
boolean myBoolean = Boolean.parseBoolean("True"); // Parsing with a native method (String to boolean)

System.out.println(myDouble);   // 9.0
System.out.println(myInt);      // 9
System.out.println(myBoolean);  // true

Incompatible Types Error: What, Why & How?

The incompatible types error indicates a situation where there is some expression that yields a value of a certain data type different from the one expected. This error implies that the Java compiler is unable to resolve a value assigned to a variable or returned by a method, because its type is incompatible with the one declared on the variable or method in question. Incompatible, in this context, means that the source type is both different from and unconvertible (by means of automatic type casting) to the declared type.

This might seem like a syntax error, but it is a logical error discovered in the semantic phase of compilation. The error message generated by the compiler indicates the line and the position where the type mismatch has occurred and specifies the incompatible types it has detected. This error is a generalization of the method X in class Y cannot be applied to given types and the constructor X in class Y cannot be applied to given types errors discussed in [4].

The incompatible types error most often occurs when manual or explicit conversion between types is required, but it can also happen by accident when using an incorrect API, usually involving the use of an incorrect reference type or the invocation of an incorrect method with an identical or similar name.

Incompatible Types Error Examples

Explicit type casting

Assigning a value of one primitive type to another can happen in one of two directions. Either from a type of a smaller size to one of a larger size (upcasting), or from a larger-sized type to a smaller-sized type (downcasting). In the case of the former, the data will take up more space but will be intact as the larger type can accommodate any value of the smaller type. So the conversion here is done automatically. However, converting from a larger-sized type to a smaller one necessitates explicit casting because some data may be lost in the process.

Fig. 1(a) shows how attempting to assign the values of the two double variables a and b to the int variables x and y results in the incompatible types error at compile-time. Prefixing the variables on the right-hand side of the assignment with the int data type in parenthesis (lines 10 & 11 in Fig. 1(b)) fixes the issue. Note how both variables lost their decimal part as a result of the conversion, but only one kept its original value—this is exactly why the error message reads possible lossy conversion from double to int and why the incompatible types error is raised in this scenario. By capturing this error, the compiler prevents accidental loss of data and forces the programmer to be deliberate about the conversion. The same principle applies to downcasting reference types, although the process is slightly different as polymorphism gets involved [5].

(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package rollbar;

public class IncompatibleTypesCasting {

  public static void main(String... args) {
    double a = 10.5;
    double b = 5.0;
    System.out.println("a: " + a + "tb: " + b);

    int x = a;
    int y = b;
    System.out.println("x: " + x + "ty: " + y);
  }
}
IncompatibleTypesCasting.java:10: error: incompatible types: possible lossy conversion from double to int
    int x = a;
            ^
IncompatibleTypesCasting.java:11: error: incompatible types: possible lossy conversion from double to int
    int y = b;
            ^
2 errors

(b)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package rollbar;

public class IncompatibleTypesCasting {

  public static void main(String... args) {
    double a = 10.5;
    double b = 5.0;
    System.out.println("a: " + a + "tb: " + b);

    int x = (int) a;
    int y = (int) b;
    System.out.println("x: " + x + "ty: " + y);
  }
}
a: 10.5 b: 5.0
x: 10   y: 5
Figure 1: Incompatible types when downcasting (a) error and (b) resolution

Explicit parsing

Parsing is a more complex process than type casting as it involves analyzing the underlying structure of a given data before converting it into a specific format or type. For instance, programmers often deal with incoming streams of characters, usually contained in a string that needs to be converted into specific types to make use of in the code. A common scenario is extracting numeric values from a string for further processing, which is where parsing is routinely used.

The main method in Fig. 2(a) declares the variable date which holds the current date as a String in the yyyy-MM-dd format. In order to get the year value into a separate variable it is necessary to “parse” the first 4 characters of the string, and this can be accomplished by splitting the string by specifying the “-” character as a delimiter and then accessing the first element (line 9 in Fig. 2(a)). With this, the year value has been successfully parsed and stored into a new variable. Attempting to increase the value of this new variable and store the resulting value in a separate int variable triggers the incompatible types error (line 10 in Fig. 2(a)). This is because even though the year has been isolated from the date and parsed into a new variable, it is impossible to perform arithmetic operations on a variable of type String. Therefore, it is necessary to represent this value as a numeric type. The best way to do this is to use Java’s built-in Integer::parseInt method which takes a String argument and converts it to an int (line 10 in Fig. 2(b)). (Note that if the given argument is not a valid integer value, this method will throw an exception.) Now that the year has been manually and explicitly parsed from the initial date string into an integer value that can be incremented, the program compiles and prints the expected message, as shown in Fig. 2(b).

(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

import java.time.LocalDate;

public class IncompatibleTypesParsing {

 public static void main(String... args) {
   String date = LocalDate.now().toString(); // "2021-12-21"
   String year = date.split("-")[0]; // "2021"
   int newYear = year + 1;
   System.out.println("Happy New Year " + newYear + "!");
 }
}
IncompatibleTypesParsing.java:10: error: incompatible types: String cannot be converted to int
    int newYear = year + 1;
                       ^
1 error

(b)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

import java.time.LocalDate;

public class IncompatibleTypesParsing {

  public static void main(String... args) {
    String date = LocalDate.now().toString();
    String year = date.split("-")[0];
    int newYear = Integer.parseInt(year) + 1;
    System.out.println("Happy New Year " + newYear + "!");
  }
}
Happy New Year 2022!
Figure 2: Incompatible types when parsing (a) error and (b) resolution

Incorrect type assignments

Sometimes, the incompatible types error can occur due to basic negligence, where the only mistake is an accidental mis-declaration of a variable’s type (Fig. 3(a)). In these instances, the issue is quite obvious and simply correcting the type declaration solves the problem (Fig. 3(b)).

(a)

package rollbar;

public class IncompatibleTypesAssignment {

 public static void main(String... args) {
   int greeting = "Merry Christmas!";
   System.out.println(greeting);
 }
}
IncompatibleTypesAssignment.java:6: error: incompatible types: String cannot be converted to int
    int greeting = "Merry Christmas!";
                   ^
1 error

(b)

package rollbar;

public class IncompatibleTypesAssignment {

 public static void main(String... args) {
   String greeting = "Merry Christmas!";
   System.out.println(greeting);
 }
}
Merry Christmas!
Figure 3: Incompatible types with incorrect assignment (a) error and (b) resolution

Incorrect method return types

A slightly less common but non-surprising occurence of the incompatible types error, especially when refactoring is involved, can be found in method return types. Namely, sometimes a method’s return statement ends up returning a value that doesn’t match the method’s declared return type (Fig. 4(a)). This issue has two possible remedies; either make the value returned match the return type (Fig. 4(b)), or change the method’s return type to match the actual value returned (Fig. 4(c)). And in the case of void methods (methods with no return type), one can simply get rid of the return statement if the return value is never used, as is the case with the example in Fig. 4.

(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

public class IncompatibleTypesReturn {

 public static void main(String... args) {
   printGreeting();
 }

 static void printGreeting() {
   System.out.println("Happy Holidays");
   return true;
 }
}
IncompatibleTypesReturn.java:11: error: incompatible types: unexpected return value
    return true;
           ^
1 error

(b)

1
2
3
4
5
6
7
8
9
10
11
12
package rollbar;

public class IncompatibleTypesReturn {

 public static void main(String... args) {
   printGreeting();
 }

 static void printGreeting() {
   System.out.println("Happy Holidays");
 }
}
Happy Holidays!

(c)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

public class IncompatibleTypesReturn {

 public static void main(String... args) {
   printGreeting();
 }

 static boolean printGreeting() {
   System.out.println("Happy Holidays");
   return true;
 }
}
Happy Holidays!
Figure 4: Incompatible types with incorrect return type (a) error and (b)(c) two solutions

Incorrect imports and similarly named reference types

It is not uncommon to come across classes or other reference types with the same or a similar name. In fact, this happens even within the standard Java API, and can baffle many programmers, beginners and experts alike. One such case is the List class which represents one of Java’s main collection data structures [6]. This reference type can easily come into collision with another type of the same name, but from a different package. Namely, that’s the java.awt.List class that is part of Java’s built-in AWT API for creating graphical user interfaces [7]. All it takes is accidentally importing the wrong package, and the compiler immediately complains about the type mismatch, raising the incompatible types error, as demonstrated in Fig. 5(a). Fixing the import on line 5, as shown in Fig. 5(b), sorts things out.

(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

import java.util.ArrayList;
import java.util.Arrays;
import java.awt.List;

public class IncompatibleTypesList {

 public static void main(String... args) {
   List songs = new ArrayList<String>(Arrays.asList("Silent Night", "Deck the Halls", "Jingle Bells", "Winter Wonderland"));
   System.out.println(songs);
 }
}
IncompatibleTypesList.java:10: error: incompatible types: ArrayList<String> cannot be converted to List
    List songs = new ArrayList<String>(Arrays.asList("Silent Night", "Deck the Halls", "Jingle Bells", "Winter Wonderland"));
                 ^
1 error

(b)

1
2
3
4
5
6
7
8
9
10
11
12
13
package rollbar;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class IncompatibleTypesList {

 public static void main(String... args) {
   List songs = new ArrayList<String>(Arrays.asList("Silent Night", "Deck the Halls", "Jingle Bells", "Winter Wonderland"));
   System.out.println(songs);
 }
}
[Silent Night, Deck the Halls, Jingle Bells, Winter Wonderland]
Figure 5: Incompatible types incorrect reference type (a) error and (b) resolution

Popular external libraries are also prone to naming their reference types similarly, so whenever relying on such a library for a certain feature or functionality it is important to pick one, or be careful not to confuse one for another, if multiple libraries are already being used.

Fig. 6(a) shows an example of passing a JSON type object to a method as an argument. Here, the method printJson expects an argument of type JsonObject, but the calling method tries to pass in an instance of the similarly named JSONObject reference type, part of a different library altogether. This results in the incompatible types error being raised by the compiler, with the alert org.json.JSONObject cannot be converted to javax.json.JsonObject pointing to the erroneous method call. Swapping the inappropriate constructor call with an instance of the correct type solves the issue, as shown in Fig. 6(b).

(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package rollbar;

import org.json.JSONObject;
import javax.json.JsonObject;
import java.util.Map;

public class IncompatibleTypesJson {

  public static void main(String... args) {
    Map<String, Object> jsonMap = Map.of(
        "name", "Saint Nicholas",
        "nicknames", new String[]{"Santa Claus", "Father Christmas"},
        "location", "North Pole"
    );

    JsonObject json = Json.createObjectBuilder(jsonMap).build();

    printJson(json);
}

  static void printJson(JSONObject jsonObject) {
    System.out.println(jsonObject.toString(4));
  }
}
IncompatibleTypesJson.java:18: error: incompatible types: 
javax.json.JsonObject cannot be converted to org.json.JSONObject
    printJson(json);
              ^

(b)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package rollbar;

import javax.json.Json;
import javax.json.JsonObject;
import java.util.Map;

public class IncompatibleTypesJson {

  public static void main(String... args) {
    Map<String, Object> jsonMap = Map.of(
        "name", "Saint Nicholas",
        "nicknames", new String[]{"Santa Claus", "Father Christmas"},
        "location", "North Pole"
    );

    JSONObject json = new JSONObject(jsonMap);

    printJson(json);
  }

  static void printJson(JSONObject jsonObject) {
    System.out.println(jsonObject.toString(4));
  }
}
{
    "name": "Saint Nicholas",
    "location": "North Pole",
    "nicknames": [
        "Santa Claus",
        "Father Christmas"
    ]
}
Figure 6: Incompatible types incorrect reference type (a) error and (b) resolution

Fig. 6 also serves as an example to show how the incompatible types error is, in fact, a generalization of the method X in class Y cannot be applied to given types error explored in [4]. Depending on the specific compiler that is being used and its configuration settings, either of these errors could be triggered in this kind of scenario.

Summary

As a strongly typed language, Java has strict rules regarding data types and how they interoperate. These rules affect variable assignment, method invocation, return values, etc. This makes Java code verbose, but at the same time quite secure, as it allows for many errors to be detected during compilation. One such error is the incompatible types error, which is directly tied to Java’s type system. This article provides some background into Java types and dives into the symptoms and causes behind the incompatible types error, by presenting a series of relevant examples tailored to bring clarity in understanding and successfully managing this error.

Track, Analyze and Manage Errors With Rollbar

Rollbar in action

Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing Java errors easier than ever. Sign Up Today!

References

[1] R. Liguori and P. Liguori, 2017. Java Pocket Guide, 4th ed. Sebastopol, CA: O’Reilly Media, pp. 23-46.

[2] W3schools.com, 2021. Java Type Casting. Refsnes Data. [Online]. Available: https://www.w3schools.com/java/java_type_casting.asp. [Accessed: Dec. 18, 2021]

[3] D. Capka, 2021. Lesson 3 — Variables, type system and parsing in Java, Ictdemy.com. [Online]. Available: https://www.ictdemy.com/java/basics/variables-type-system-and-parsing-in-java. [Accessed: Dec. 19, 2021]

[4] Rollbar, 2021. How to Fix Method/Constructor X in Class Y Cannot be Applied to Given Types in Java, Rollbar Editorial Team. [Online]. Available: https://rollbar.com/blog/how-to-fix-method-constructor-in-class-cannot-be-applied-to-given-types-in-java/. [Accessed: Dec. 21, 2021]

[5] W3schools.com, 2021. Java Type Casting. Refsnes Data. [Online]. Available: https://www.w3schools.com/java/java_type_casting.asp. [Accessed: Dec. 21, 2021]

[6] Oracle.com, 2021. Lesson: Implementations (The Java™ Tutorials > Collections). [Online]. Available: https://docs.oracle.com/javase/tutorial/collections/implementations/index.html. [Accessed: Dec. 21, 2021]

[7] Oracle.com, 2020. Package java.awt (Java SE 15 & JDK 15). Oracle and/or its affiliates [Online]. Available: https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/java/awt/package-summary.html. [Accessed: Dec. 21, 2021]

Содержание

  1. ошибка: несовместимые типы: String не может быть преобразован в int
  2. 2 ответа
  3. How to Handle the Incompatible Types Error in Java
  4. Introduction to Data Types & Type Conversion
  5. Incompatible Types Error: What, Why & How?
  6. Incompatible Types Error Examples
  7. Explicit type casting
  8. Аннотации типов Python
  9. Что такое аннотации типов?
  10. Зачем и как использовать аннотации типов
  11. Сложные типы
  12. Псевдонимы типов
  13. Несколько возвращаемых значений
  14. Несколько возможных типов возвращаемых значений
  15. Больше примеров

ошибка: несовместимые типы: String не может быть преобразован в int

Я новичок в программировании и очень новичок в Java, поэтому я уверен, что этот вопрос (и все мои другие ошибки) будет очевиден для любого, у кого есть опыт. Я точно не знаю, что делаю. Моим заданием было преобразовать код Python в Java. Ниже мой код.

Мои два кода ошибки:

Для пояснения я использую JGrasp, но не хочу.

Спасибо за продвинутую помощь.

2 ответа

response — это int , а метод nextLine() из Scanner возвращает . ну, строку, представленную String . Вы не можете назначить String на int — как бы вы это сделали? String может быть любым, от «some text» до » a 5 0 » . Как бы вы преобразовали первый и / или второй в int ?

Вероятно, вы хотели:

Метод nextInt() ожидает последовательность цифр и / или символов, которые могут представлять число, например: 123 , -50 , 0 и так далее .

Однако вы должны знать об одной важной проблеме — смешивание nextLine() и nextInt() может привести к нежелательным результатам. Например:

Напечатает ничего , потому что при вводе числа вы вводите, например, 123 и нажимаете enter , вы дополнительно вводите символ новой строки . Затем nextLine() сработает и просканирует каждый символ до первого введенного символа новой строки или конца файла , который, очевидно, все еще там , не использованный < >. Чтобы исправить это и узнать больше об этом, перейдите здесь

Чтобы прочитать целое число из файла, вы можете просто использовать такой пример:

Однако вы не даете дополнительной информации о своей файловой структуре, поэтому я советую еще раз заглянуть в документацию, чтобы найти то, что вам больше всего подходит. Вы можете найти документацию по сканеру здесь.

Источник

How to Handle the Incompatible Types Error in Java

Table of Contents

Introduction to Data Types & Type Conversion

Variables are memory containers used to store information. In Java, every variable has a data type and stores a value of that type. Data types, or types for short, are divided into two categories: primitive and non-primitive. There are eight primitive types in Java: byte , short , int , long , float , double , boolean and char . These built-in types describe variables that store single values of a predefined format and size. Non-primitive types, also known as reference types, hold references to objects stored somewhere in memory. The number of reference types is unlimited, as they are user-defined. A few reference types are already baked into the language and include String , as well as wrapper classes for all primitive types, like Integer for int and Boolean for boolean . All reference types are subclasses of java.lang.Object [1].

In programming, it is commonplace to convert certain data types to others in order to allow for the storing, processing, and exchanging of data between different modules, components, libraries, APIs, etc. Java is a statically typed language, and as such has certain rules and constraints in regard to working with types. While it is possible to convert to and from certain types with relative ease, like converting a char to an int and vice versa with type casting [2], it is not very straightforward to convert between other types, such as between certain primitive and reference types, like converting a String to an int , or one user-defined type to another. In fact, many of these cases would be indicative of a logical error and require careful consideration as to what is being converted and how, or whether the conversion is warranted in the first place. Aside from type casting, another common mechanism for performing type conversion is parsing [3], and Java has some predefined methods for performing this operation on built-in types.

Incompatible Types Error: What, Why & How?

The incompatible types error indicates a situation where there is some expression that yields a value of a certain data type different from the one expected. This error implies that the Java compiler is unable to resolve a value assigned to a variable or returned by a method, because its type is incompatible with the one declared on the variable or method in question. Incompatible, in this context, means that the source type is both different from and unconvertible (by means of automatic type casting) to the declared type.

This might seem like a syntax error, but it is a logical error discovered in the semantic phase of compilation. The error message generated by the compiler indicates the line and the position where the type mismatch has occurred and specifies the incompatible types it has detected. This error is a generalization of the method X in class Y cannot be applied to given types and the constructor X in class Y cannot be applied to given types errors discussed in [4].

The incompatible types error most often occurs when manual or explicit conversion between types is required, but it can also happen by accident when using an incorrect API, usually involving the use of an incorrect reference type or the invocation of an incorrect method with an identical or similar name.

Incompatible Types Error Examples

Explicit type casting

Assigning a value of one primitive type to another can happen in one of two directions. Either from a type of a smaller size to one of a larger size (upcasting), or from a larger-sized type to a smaller-sized type (downcasting). In the case of the former, the data will take up more space but will be intact as the larger type can accommodate any value of the smaller type. So the conversion here is done automatically. However, converting from a larger-sized type to a smaller one necessitates explicit casting because some data may be lost in the process.

Fig. 1(a) shows how attempting to assign the values of the two double variables a and b to the int variables x and y results in the incompatible types error at compile-time. Prefixing the variables on the right-hand side of the assignment with the int data type in parenthesis (lines 10 & 11 in Fig. 1(b)) fixes the issue. Note how both variables lost their decimal part as a result of the conversion, but only one kept its original value—this is exactly why the error message reads possible lossy conversion from double to int and why the incompatible types error is raised in this scenario. By capturing this error, the compiler prevents accidental loss of data and forces the programmer to be deliberate about the conversion. The same principle applies to downcasting reference types, although the process is slightly different as polymorphism gets involved [5].

Источник

Аннотации типов Python

Python известен как язык Дикого Запада, в котором дозволено всё. Стили кода (если не считать отступы) и документации, по большей части, оставлены на усмотрение разработчика. Но это может привести к некоторому беспорядку и нечитабельности кода.

Частично это связано с тем, что Python — язык с динамической типизацией. Это означает, что типы связаны со значением переменной, а не с ней самой. Таким образом, переменные могут принимать любое значение в любой момент и проверяются только перед выполнением операций над ними.

Рассмотрим следующий код. В Python это вполне приемлемо.

В приведенном выше коде значение age сначала является int , но позже мы меняем его на str . Каждая переменная может представлять любое значение в любой точке программы. В этом сила динамической типизации!

Попробуем сделать то же самое на языке со статической типизацией, например на Java.

Мы получаем следующую ошибку, потому что пытаемся назначить «Twenty One» (строку) переменной age , которая была объявлена ​​как int .

Чтобы тот же функционал работал на языке со статической типизацией, нам пришлось бы использовать две отдельные переменные.

Это приемлемо, но мне очень нравится гибкость Python и, в частности, динамическая типизация, благодаря которой мне не приходится объявлять больше переменных, чем необходимо. Но мне также нравится удобочитаемость статически типизированных языков, ведь так другие программисты знают, какого типа должна быть конкретная переменная! Чтобы получить лучшее из обоих миров, в Python 3.5 были представлены аннотации типов.

От редакции Pythonist. Предлагаем также почитать статью «Проверка типов данных и «утиная» типизация в Python».

Что такое аннотации типов?

Аннотации типов – это новая возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной. Это придаёт немного статический вид коду на динамически типизированном Python. Достигается это синтаксисом: после инициализации / объявления переменной.

Ниже показан пример, в котором при объявлении переменной добавляется : int , чтобы показать, что возраст должен иметь тип int .

Важно отметить, что аннотации типов никоим образом не влияют на время выполнения программы. Эти подсказки игнорируются интерпретатором и используются исключительно для повышения удобочитаемости для других программистов и вас самих.

Зачем и как использовать аннотации типов

Полезной особенностью языков со статической типизацией является то, что тип значения переменной всегда известен. Например, мы знаем, что строковые переменные могут быть только строками, int может быть только целым числом и т. д. С динамически типизированными языками можно только догадываться, каким является или должно быть значение переменной.

Мы можем использовать ожидаемый тип переменной при написании и вызове функций, чтобы обеспечить правильную передачу и использование параметров. Если мы передадим str , когда функция ожидает int , то, скорее всего, она не будет работать так, как мы ожидали.

Рассмотрим следующий код:

Мы видим, что делает эта функция, но знаем ли мы, какими должны быть a , b или times ? Посмотрите на следующий код, особенно на две строки, в которых мы вызываем mystery_combine с разными типами аргументов. Обратите внимание на вывод каждой версии, который показан в комментариях под каждым блоком.

Странно: в зависимости от того, что мы передаем функции, мы получаем два совершенно разных результата. С целыми числами мы получаем вычисления, но когда мы передаем в функцию строки, первые два аргумента объединяются, и эта результирующая строка умножается на times .

Оказывается, написавший функцию разработчик ожидал, что именно вторая версия станет вариантом использования mystery_combine ! Используя аннотации типов, мы можем устранить эту путаницу.

К параметрам функции добавились : str , : str и : int , чтобы показать, какого типа они должны быть. Это должно сделать код более понятным для чтения и лучше раскрыть его предназначение.

Мы также добавили -> str , чтобы показать, что эта функция вернет str . Используя -> , мы можем более легко показать типы возвращаемых значений любой функции или метода, чтобы избавить от возможной путаницы будущих разработчиков!

Функцию все еще можно вызвать неправильно, но, присмотревшись, программист должен понять, как следует ее использовать. Аннотации типов и подсказки невероятно полезны для приложений Python, над которыми работают нескольких разработчиков. Это устраняет большую часть догадок при чтении кода!

Сложные типы

Однако, не всегда всё будет так просто, поэтому давайте разберемся с некоторыми более сложными случаями.

Для чего-то большего, чем примитивные типы в Python, используйте класс typing . В нем описаны типы для аннотирования любой переменной любого типа. Он поставляется с предварительно загруженными аннотациями типов, таких как Dict , Tuple , List , Set и т. д. Затем вы можете расширить подсказки по типу до вариантов использования, как в примере ниже.

Это скажет читателю, что names должен быть списком строк. Словари работают аналогично.

Подсказка типа Dict [str, float] сообщает нам, что оценки должны быть словарем, где ключи являются строками, а значения — числами с плавающей запятой.

В других сложных примерах понадобится модуль typing .

Псевдонимы типов

Если вы хотите работать с пользовательскими именами типов, вы можете использовать псевдонимы типов. Допустим, вы работаете с группой точек [x, y] в виде кортежей. Тогда можно использовать псевдоним для сопоставления типа Tuple с типом Point .

Несколько возвращаемых значений

Если ваша функция возвращает несколько значений в виде кортежа, просто оберните ожидаемый результат вот так: typing.Turple[ , , . ]

Приведенный код возвращает кортеж количества успешных попыток и ошибок при вызове API – оба значения имеют тип int . Используя Tuple[int, int] , мы указываем читателю, что функция действительно возвращает несколько значений int .

Несколько возможных типов возвращаемых значений

Если в вашей функции есть переменная, принимающая значения различных типов, можно использовать типы typing.Optional или typing.Union .

Используйте Optional , если значение будет либо определенного типа, либо исключительно None .

Код, приведенный выше, указывает, что some_num может иметь тип int или None .

Когда значение может принимать более конкретные типы, используйте Union .

Приведенный выше код указывает, что оценка может иметь тип int или str . Это полезно в нашем примере с выводом оценок, так что мы можем вывести 98% или «Девяносто восемь процентов» без каких-либо неожиданных последствий.

Больше примеров

Дополнительные примеры вы можете найти в официальной документации Python о модуле typing – там можно проверить ещё массу различных вариантов использования аннотации типов. В этой cтатье я показал лишь верхушку айсберга, но, надеюсь, вдохновил вас на написание более чистого кода.

Источник

  • Отзывы
  • О нас
  • CS50
  • Все вопросы

Что за компиляция?
incompatible types: java.lang.String cannot be converted to int:
Solution.java, line: 9, column: 17

Напиши программу, которая в методе main объявляет такие переменные:
name типа String, age типа int и city типа String.

Примечание: «объявить переменную» — значит то же, что и «создать переменную».

  • Объяви переменную name типа String.

  • Объяви переменную age типа int.

  • Объяви переменную city типа String.

  • Должны быть объявлены 3 переменные.

package com.javarush.task.task01.task0105;

/*
Объявляем переменные
*/

public class Solution {
public static void main(String[] args) {
String x = «age» ;
String r = «name» ;
String s = «city» ;
}
}

  • популярные
  • новые
  • старые

Объяви переменную name типа variable означает — Объяви переменную, название которой будет name, а тип — variable.
То есть,

int age;

а не

String x = "age";

14 марта 2018, 11:37

решение

incompatible types: java.lang.String cannot be converted to int:
Solution.java, line: 9, column: 17

Данная ошибка относится к другому коду, в приведенном коде нет конвертации строки в число.

тоесть если тебе говорят сделай переменную текстовую к примеру с названием lol, то нужно писать так
String lol;
если ты хочешь дать ей значение то
String lol = «кек чебурек»;

во первых у тебя все переменные одного типа а нужна еще одна числовая,
во вторых ты указал переменые x r s и дал им значения переменных «age» «name» «city»,

Почитайте про объявление переменных. Где объявляется тип переменной, где имя, и как ей присваивается значение

Я новичок в программировании и очень новичок в 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 ответа

Лучший ответ

response — это int, а метод nextLine() из 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, -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() сработает и просканирует каждый символ до первого введенного символа новой строки или конца файла , который, очевидно, все еще там , не использованный { {X2}}. Чтобы исправить это и узнать больше об этом, перейдите здесь


1

Fureeish
19 Янв 2018 в 19:34

Чтобы прочитать целое число из файла, вы можете просто использовать такой пример:

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

Однако вы не даете дополнительной информации о своей файловой структуре, поэтому я советую еще раз заглянуть в документацию, чтобы найти то, что вам больше всего подходит. Вы можете найти документацию по сканеру здесь.


1

Rudziankoŭ
31 Янв 2018 в 13:47

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Типы данных

Основы Java

Число в виде строки

Внутри высокоуровневых языков программирования данные разделяются по типам. Например, строки относятся к типу String, а числа — к типу int.

Зачем нужны типы? Для защиты программы от трудноотловимых ошибок. Типы определяют две вещи:

  • Допустимые значения. Например, числа в Java делятся на две группы типов: целые int и рациональные float. Такое разделение связано с техническими особенностями работы аппаратуры.
  • Набор допустимых операций. Например, операция умножения имеет смысл для типа «целые числа». Но не имеет смысла для типа «строки»: умножать слово «мама» на слово «блокнот» — бессмыслица.

Язык программирования распознает типы. Поэтому Java не позволит нам умножать строку на строку. Но позволит умножать целое число на другое целое число. Наличие типов и таких ограничений в языке защищает программы от случайных ошибок:

"one" * "two"
Error:
bad operand types for binary operator '*'
    first type:  java.lang.String
    second type: java.lang.String

Каким образом Java понимает, что за тип данных перед ним? Любое значение где-то инициализируется. В зависимости от способа инициализации, становится понятно, что именно находится перед нами.

Например, число — это просто число, не обернутое в кавычки или другие парные символы. А вот строки всегда ограничены двойными кавычками. Например, значение "234"считается строкой, хотя внутри нее записаны цифры:

// Компилятор понимает что тут число
var age = 33;

По-английски строки в программировании называются strings, а строчки текстовых файлов называются lines. Например, в коде выше одна строчка (lines) и ноль строк (strings). В русском языке иногда может быть путаница, поэтому во всех уроках мы будем говорить использовать такие термины:

  • Строка — для обозначения типа данных strings
  • Строчка — для обозначения lines (строчек в текстовых файлах)

Типов данных в Java много, плюс можно создавать свои. Постепенно мы познакомимся со всеми необходимыми и научимся их правильно использовать.

Явная типизация

До сих пор при определении переменных мы использовали ключевое слово var, что может удивить тех, кто имеет какой-то опыт на Java. Обычно определение переменных показывают так:

int x = 3;
String greeting = "Hello Hexlet!";

// Error: incompatible types: java.lang.String cannot be converted to int
int ops = "test";

Пришло время раскрыть карты! Java — это статически типизированный язык. В таких языках тип переменной фиксируется при ее объявлении. В большинстве языков для этого перед именем переменной указывается ее тип — в примере выше это число (int) и строка (String).

Раньше на Java создавали переменные только так, до тех пор пока не появился var. var – специальное ключевое слово, которое включает механизм вывода типов. Вывод типов автоматически определяет тип присваиваемого значения и связывает его с переменной. В примерах выше очевидно, где какой тип, тогда зачем его явно прописывать?

Вывод типов в Java появился в 2018 году, но в некоторых других язык он существует не один десяток лет. Первый язык с выводом типов называется ML и появился он аж в 1973 году. С тех пор вывод типов был добавлен в Ocaml, Haskell, C#, F#, Kotlin, Scala и множество других языков.

Вывод типов и предпочтителен в большинстве ситуаций, однако бывает такое, что выводимый тип нас не устраивает. Тогда мы можем указать тип явно.

Какие бывают типы

В этом уроке мы рассмотрим систему типов в Java с высоты птичьего полета, не погружаясь в детали. Но сначала ответим на вопрос, зачем вообще про них знать?

В коде мы все время оперируем данными. Эти данные имеют разную природу, могут быть по-разному организованы, что влияет на удобство работы с ними. Типы преследуют нас на каждом шагу, поэтому без них программирование на Java возможно только на очень базовом уровне.

С другой стороны, не пытайтесь запомнить всю эту информацию про типы наизусть — она дается лишь для общего представления. Все важное о типах вы и так выучите в процессе программирования. Глобально, типы данных в Java делятся на две большие группы:

  • Примитивные — предопределены в Java
  • Ссылочные или не примитивные — создаются самим программистом, за исключением String и Array

У этих групп есть различия, которые мы разберем позже, когда познакомимся с null и объектно-ориентированным программированием. Пока достаточно знать, что имена примитивных типов начинаются с нижнего регистра (int), а ссылочных с верхнего (String).

Всего в Java восемь примитивных типов данных:

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

Рассмотрим первые четыре типа. Это целые числа разного размера:

  • byte — занимает в памяти 1 байт, значит может хранить числа от -128 до 127
  • short — занимает в памяти 2 байта
  • int — занимает в памяти 4 байта
  • long — занимает в памяти 8 байт

Посмотрим на примере такого кода:

byte x = 3; // Отработает без проблем

// Error: incompatible types: possible lossy conversion from int to byte
byte y = 270;

Определение переменной y завершилось с ошибкой, потому что мы указали тип byte, но присвоили переменной значение 270, которое выходит за множество допустимых значений.

Возникает закономерный вопрос. Зачем аж четыре типа для хранения чисел? Почему бы не сделать один, в который влезает почти любое большое число?

Технически так сделать можно, но мы находимся в мире инженерных решений. У любого решения всегда есть обратная сторона, поэтому невозможно сделать идеально — придется чем-то пожертвовать. В данном случае, объемом занимаемой памяти. Если оставить только long, то программа, активно оперирующая числами, начнет занимать слишком много места в оперативной памяти, что может быть критично.

Такая же логика использовалась для типов float и double. Они оба отвечают за рациональные числа. Разница лишь в том, что double — это двойной float, то есть в памяти он занимает в два раза больше места.

Создатели Java полагаются на разумность программистов, на их способность правильно подобрать нужные типы в зависимости от задачи. Для каких-то экстремальных приложений так и происходит, но в типичной разработке все просто. Программисты выбирают int для целых чисел и double для рациональных.

Рассмотрим оставшиеся типы данных.

Тип boolean отвечает за логические значения true и false. Им посвящен целый раздел, там мы про него и поговорим.

Особняком стоит тип char — символ. Это не строка, у него другой способ определения — через одиночные кавычки:

char ch = 'a';

// Error: incompatible types: java.lang.String cannot be converted to char
char ch2 = "b";

Строка, состоящая из одного символа — это не символ. Кажется, нелогично, но с точки зрения типов все так и должно быть, со временем вы это прочувствуете.

Извлечение символа из строки извлекает как раз символ, а не строку, состоящую из одного символа:

"hexlet".charAt(1); // 'e'

Хорошо, а где тип данных String — строка? Дело в том, что она не является примитивным типом. Внутри она представляет собой массив символов. Несмотря на это техническое различие, строки используются наравне с примитивными типами без особых отличий.

Значение по умолчанию

Примитивные данные всегда имеют значение, даже если они определяются без инициализации:

int a;
System.out.println(a); // => 0

У каждого примитивного типа есть свое значение по умолчанию:

byte    0
short   0
int     0
long    0
float   0.0
double  0.0
char    ''
boolean false

Значение null

Особняком в Java стоит значение null. В Java оно не является типом. Это просто конкретное значение со специальным смыслом и логикой работы. Начнем с примера:

// Определение переменной без инициализации значением
// С var такое не сработает, так как невозможно вывести тип
String a;

Что находится внутри переменной a? Если мы ее распечатаем, то увидим null. Значение null используется для ссылочных типов, когда значение не определено.

Как такое возможно? Представьте, что мы хотим извлечь из базы данных пользователя, а его там нет. Что вернет нам запрос в базу? Вот именно для таких ситуаций и нужен null.

Их гораздо больше, чем может показаться на первый взгляд. Чем дальше мы будем двигаться, тем чаще он начнет встречаться:

var user = // тут делаем запрос в базу
// Если данных нет, то user станет null
// Запись выше равносильна
var user = null;

Из вышесказанного следует важный вывод. Любой ссылочный тип данных может принимать значение null. То есть, null является значением любого ссылочного типа. А вот примитивные типы и null не совместимы. Примитивное значение всегда должно быть определено:

// Error: incompatible types: <nulltype> cannot be converted to int
int x = null;

Явное преобразование типов

В программировании регулярно встречаются задачи, когда один тип данных нужно преобразовать в другой. Простейший пример – работа с формами на сайтах.

Данные формы всегда приходят в текстовом виде, даже если значение число. Вот как его можно преобразовать:

// станет int
var number = Integer.parseInt("345");
System.out.println(number); // => 345

Если нужно конвертировать из примитивного типа в примитивный, то все проще. Достаточно перед значением в скобках указать желаемый тип. В результате значение справа преобразуется в значение другого типа, указанного слева:

var result = (int) 5.1;
System.out.println(result); // => 5

Преобразование типов можно использовать внутри составных выражений:

// Дополнительные скобки помогают визуально отделить части выражения друг от друга
var result = 10 + ((int) 5.1);
System.out.println(result); // => 15


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

What this type of error mean?

2 Answers

Gavin Ralston

It likely means you’re trying to assign a String value to a variable that is declared as another Type.

Like so:

public class Employee {

    String name;

}

Employee employee1 = "Bob";

Or maybe something like:

int guess = //some method or statement that collects input from the user at the console here....

…but then you never cast it to an integer, so the input came back as a String, even though you meant to store an integer or something.

So I’d check the call stack, find out what the line was that you’re having trouble with, and just look at what that line might be trying to do, versus what you really want it to do.

Cindy Lea

PLUS

Without seeing your code, did you do something like this with your integer & string?

int i = Integer.parseInt(myString);

Я пытаюсь получить параметр из cmd и передать этот параметр методу Fibonacci, но я получаю некоторую ошибку. Может ли кто-нибудь сказать мне, почему я получаю эту ошибку?

Спасибо.

Код:

class fibo {

static void Fibonacci(int Total,int n1,int n2){

    if(Total > 1){      
        int sum = n1 + n2;
        System.out.print(sum + " ");
        n1 = n2;
        n2 = sum;
        --Total;
        Fibonacci(Total,n1,n2);
    }
}

}

class main{

    public static void main(String args[]){

    fibo f = new fibo();    
    System.out.print(0 + " ");
    System.out.print(1 + " ");
    int Total = args[0];
    int n1 = args[1];
    int n2 = args[2];    
    f.Fibonacci(Total,n1,n2);


    }
}

Ошибка:

fibonacci.java:26: error: incompatible types: String cannot be converted to int
int Total = args[0];

fibonacci.java:27: error: incompatible types: String cannot be converted to int

    int n1 = args[1];

fibonacci.java:28: error: incompatible types: String cannot be converted to int

int n2 = args[2];

3 errors

31 янв. 2018, в 08:52

Поделиться

Источник

1 ответ

int n1 = args[1];
int n2 = args[2]; 

Вы пытаетесь напрямую привязать String к int. Нет, это не сработает.

args — массив String и содержит строки. Поэтому, когда вы пытаетесь присвоить значение из него целочисленному varaible, вы должны преобразовать.

Например:

int n1 = Integer.parseInt(args[1]);

То же самое с другими заданиями.

ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ
31 янв. 2018, в 04:38

Поделиться

Ещё вопросы

  • 1ngFor внутри ngДля возникновения ошибки
  • 1Сравните атрибут для WPF?
  • 0Попытка что-то переключить и скрыть кнопку переключения
  • 1в элементах вращения отображаются списки массива для замены нарисованных изображений, как это может быть реализовано
  • 1Прогнозирование POS-тега предстоящего слова
  • 0Функция углового щелчка Yeoman не активируется
  • 0Makefile Нет такого файла или каталога произошла ошибка, когда включенный файл включает другой файл
  • 1Как создать и стилизовать ComboBox с двумя столбцами в WPF
  • 0Как я могу узнать, сколько раз пятница 13-го появляется в году?
  • 0jQuery.extend и глючный IE не перечислимые реквизиты
  • 0Голос за кадром в iOS для диапазона слайдера с вертикальным типом ввода неверно отображает пролистывание влево и вправо
  • 0Лучший вариант? Действия запроса MySQL
  • 0угловое повторение скрывает стиль div
  • 0Неверный синтаксис запроса при запросе couchdb lucene из php (с curl) нелатинскими символами
  • 0что будет, если мы подадим сигнал семафору без ожидания?
  • 0JQuery экранная клавиатура по запросу
  • 0yii2 бутстрап выпадающий из модели
  • 1проверить, если 2d массив действителен
  • 0Vimeo Advanced API, удаление приложений
  • 0Обновление столбца на основе связи с другой таблицей
  • 0Что эквивалентно GNU TM в Visual Studio?
  • 0Как отобразить данные отношений в формате json из двух таблиц базы данных в rest api и yii2
  • 1Как исправить ошибку HighChart # 20?
  • 0Sql Delete запускает несколько строк
  • 0Как сослаться на значение из той же строки в MySQL?
  • 0C ++ DirectX 9.0 Sprite Alpha Blending не отображается
  • 1Как я могу получить больше отзывов от журнала, когда у меня есть набор тестов, который использует @RunWith?
  • 0Настройте mysimpleads с помощью CakePHP
  • 12 Различные веб-приложения — как можно распознать аутентифицировать другое
  • 0Цепочка подзапросов SQL в большом запросе JOINS
  • 1Как сделать эту функцию с помощью apply
  • 0Междоменная проблема для Express JS и Angular Js
  • 0Угловые ng-опции с фильтром, получающим бесконечную ошибку дайджеста
  • 0jQuery динамически вставляет новое поле ввода в keyup
  • 1Отправка объекта сериализации protobuf из C # на сервер Java не работает?
  • 0JSP не может получить доступ к драйверу mysql при затмении
  • 1Переменная больше размера байта, почему?
  • 0Применение CSS к отдельным словам в поле ввода текста
  • 0угловой JavaScript не будет применяться к вставленному элементу пользовательского интерфейса
  • 1Поддерживает ли Android setjmp / longjmp, access, chdir, getcwd?
  • 0Синтаксическая ошибка в полном внешнем соединении?
  • 0Как увидеть строку запроса на моей веб-странице из отдельного файла php?
  • 1MaxHeapSize в Java
  • 0Почему эти переключатели переключаются, когда они выбраны?
  • 0Есть ли способ получить массив индексируется по именам таблиц в PHP MySQL PDO
  • 1Android 2.1 / 2.2 Bluetooth последовательное соединение с настольным компьютером
  • 0Должен ли я хранить настройки приложения в одном массиве столбцов? или создать таблицу из нескольких столбцов?
  • 0цикл ifstream eof, который считывает переменную в условном выражении?
  • 0Как обновить строку с помощью int (+1) и преобразовать обратно в строку
  • 0CKeditor с несколькими динамическими текстовыми областями

Сообщество Overcoder


  1. Home


  2. Software Programming


  3. Word Error in Java — «error: incompatible types: String cannot be converted to int»

This topic has been deleted. Only users with topic management privileges can see it.


  • Here’s the code that makes mistakes:

    int frase;
    frase = "hola";
    

    And the mistake pointing to the last of these lines:

    error: incompatible types: String cannot be converted to int


  • Java is a language in which you have to declare the type to be stored in each of the variables. In this case you’re trying to introduce a String into an entire number and that’s why it gives you the mistake.

    String frase;
    frase = "hola";
    

    On the other hand, if you want to store an integer, you should use the value int.

    int numero;
    numero = 5;
    

    You have to keep in mind that when you declare a variable with its type will not change its type in all programme implementation.


Suggested Topics

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    1
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

  • 2

    0
    Votes

    2
    Posts

    0
    Views

Понравилась статья? Поделить с друзьями:
  • Error incompatible types possible lossy conversion from double to float
  • Error incompatible types object cannot be converted to
  • Error incompatible types nonexistentclass cannot be converted to annotation
  • Error incompatible types java
  • Error incompatible types in assignment