StringToInt() - Type mismatch: cannot convert from...

Status
Nicht offen für weitere Antworten.
Hallo, ich habe eine Frage, ich versuche gerade eine einfache .txt Datei auszulesen. Das funktioniert für Strings ganz gut mit dem untenstehenden Code, allerdings benötige ich einen Teil der Datei als Integer. Dazu habe ich die Methode StringToInt(). Möchte ich diese nun aber in der Methode DateiEinlesen() mit "int menge3 = StringToInt(menge);" aufrufen, dann bekomme ich den Fehler "Type mismatch: cannot convert from void to int". Könnte mir da bitte jemand einen Hinweis geben, woran das liegen kann?
Vielen Dank schonmal.

Code:
import java.io.*;

public class FileIO {

	private FileIO() {
	}

	public static void StringToInt (String x){
		{
			String k = x;
			int result;
			try {
				result = Integer.parseInt(k); 
			} catch(NumberFormatException exc) {
				System.out.println("Ungültig " + k);
				return;
			}
			System.out.println("Die Zahl ist " + result);
		}
	}

	public static String DateiEinlesen(String inName)
	throws FileNotFoundException, IOException {
		BufferedReader is = new BufferedReader(new FileReader(inName));
		String menge = null;
		String line = null;

		while ((line = is.readLine()) != null) {
			System.out.println(line);
			int laenge = line.length();
			System.out.println(laenge);
			menge = line.substring(4,laenge);
			int menge3 = StringToInt(menge);
			System.out.println("Menge: " +menge);
		}
		
		return line;
	}

public static void main(String[] args) {
		try{
		FileIO.DateiEinlesen("mengen.txt");
		} catch (FileNotFoundException e) {
			System.err.println(e);
		}	catch (IOException e) {
			System.err.println(e);		
		}
	}
 

SebiB90

Top Contributor
deine methode StringToInt muss auch was zurück geben ;)
also muss das erstmal int StringToInt heißen und nicht void StringToInt
dann musste am ende der methode auch return result; machen, dann klappt es
 
Danke erstmal für die Antwort. Ich hoffe es kam nicht zu sehr durch, dass ich ein ziemlicher Anfänger bin. ;) Habe ich das richtig verstanden, dass die Methode dann so aussehen soll?

Code:
	public static int StringToInt(String x){
		{
			String k = x;
			int result;
			try {
			result = Integer.parseInt(k); 
			} catch(NumberFormatException exc) {
				System.out.println("Ungültig " + k);
				return result;
			}
			System.out.println("Die Zahl ist " + result);
		}
		return result;
	}

Wenn sie so aussieht, dann wird mir der "int menge3 = StringToInt(menge);" - Aufruf nicht mehr angemarkert, aber bei dem zweiten "return result;" bekomme ich die Meldung "result cannot be resolved". Woran könnte das liegen?
 

Illuvatar

Top Contributor
Eine Lokale Variable ist nur solange gültig, bis der ausführende Anweisungsblock beendet ist. Und du machst da einen eigentlich unnötigen Anweisungsblock rein, und zwar
Code:
   public static int StringToInt(String x){ 
      {  //von hier
         String k = x; 
         int result; 
         try { 
         result = Integer.parseInt(k); 
         } catch(NumberFormatException exc) { 
            System.out.println("Ungültig " + k); 
            return result; 
         } 
         System.out.println("Die Zahl ist " + result); 
      }  //bis hier
      return result; 
   }

Wenn du den weglässt, sieht das so aus:
Code:
   public static int StringToInt(String x){ 
      String k = x; 
      int result; 
      try { 
      result = Integer.parseInt(k); 
      } catch(NumberFormatException exc) { 
         System.out.println("Ungültig " + k); 
         return result; 
      } 
      System.out.println("Die Zahl ist " + result); 
      return result; 
   }
 
Illuvatar hat gesagt.:
Wenn du den weglässt, sieht das so aus:
Code:
   public static int StringToInt(String x){ 
      String k = x; 
      int result; 
      try { 
      result = Integer.parseInt(k); 
      } catch(NumberFormatException exc) { 
         System.out.println("Ungültig " + k); 
         return result; 
      } 
      System.out.println("Die Zahl ist " + result); 
      return result; 
   }

Danke erstmal für die Antwort. Ich weiss nicht, ob ich mich gerade extrem blöd anstelle, aber ich komm an der Stelle einfach nicht weiter. Wenn ich die Methode genau so übernehme, dann bekomm ich als Fehler "The local variable result may not have been initialized". Funktioniert das bei Dir? Kann es noch woanders dran liegen? Sorry, wenn ich damit nerve, aber ich hänge hier gerade total.
 

kaie

Bekanntes Mitglied
Wie die Fehlermeldung schon sagt: Deine Variable result wird nicht initialisiert, wenn eine Exception beim Parsen aufgetreten ist. Entweder ergänzt Du einen beliebigen Startwert, oder Du gibst direkt irgendeine Zahl zurück. Oder, was am schönsten wäre, Du läßt einfach gleich alle überflüssigen Variablen weg:

Code:
public static int StringToInt(String x)
{ 
  try { 
    return Integer.parseInt(x); 
  } catch(NumberFormatException exc) { 
    System.out.println("Ungültig " + x); 
    return -1; 
  } 
}
kaie
 

SammY

Bekanntes Mitglied
Versuchs mal so:

Code:
    public static int StringToInt(String x){ 
      String k = x; 
      int result = 0;  //du musst die variable initialisieren 
      try { 
      result = Integer.parseInt(k); 
      } catch(NumberFormatException exc) { 
         System.out.println("Ungültig " + k); 
         return result; 
      } 
      System.out.println("Die Zahl ist " + result); 
      return result; 
   }
 

Spoocky

Aktives Mitglied
bei mir liefert das programm nur 0 oder 0.0 zurück, es gibt auch die Fehlermeldung aus, bei der "ungültig" angezeigt wird.

woran kann das liegen ?
 
B

Beni

Gast
"parseInt" bekommt wohl eine falsch formatierte Eingabe. Welchen Wert hat denn "k" in der "stringToInt"-Methode?
 

Spoocky

Aktives Mitglied
Code:
public static int StringToInt(String x){
      String k = x;

so wie oben dargestellt. k wird x zugewiesen und x wird übernommen. Die übernommenen variablen sind alle String;
 
B

Beni

Gast
Ja, aber das sagt doch nichts über den Wert aus :wink: Interessant ist, was "System.out.println( "\"" + k + "\"");" ausgibt. Wenn da nämlich etwas wie " 123" oder "abc" steht, kann "parseInt" nichts damit anfangen, und wirft eine Exception ("k" darf nur Zahlen als Wert haben).
 

Spoocky

Aktives Mitglied
ok: die Variaben-Inhalte haben folgende Beispielwerte: 0,0125 16,125 6,105.

Gibt es da ein Problem bei der Umwandlung?
 
B

Beni

Gast
Ja: es sind keine Integer (=Ganzzahlen). Damit du mit Kommazahlen arbeiten kannst, must du "int" mit "double", "Integer.parseInt" mit "Double.parseDouble" ersetzen. "double" ist eine Flieskommazahl, wird also diese Wert verarbeiten können.

Aber das ist noch nicht genug, "Double.parseDouble" erwartet als Trennzeichen kein Komma "," sondern ein Punkt ".". Also etwas wie "0.0125". Entweder gibst du die Daten anders ein, oder du benutzt "replace" um die Kommas auszutauschen.
 

Spoocky

Aktives Mitglied
danke erstmal.

Habe jetzt "Int" durch "Double" ersetzt. Jetzt gibts aber ein Problem mit der "return-Anweisung". Hier steht, dass double nicht in int umgewandelt werden kann. Gibts da auch nen Trick?
 
B

Beni

Gast
Wenn du mit Kommazahlen arbeiten willst, musst du natürlich überall "int" durch "double" ersetzen.

Wenn du den Teil hinter dem Komma abschneiden willst, kannst du einen Cast machen:
Code:
double d = ...
int i = (int)d;
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G stringToInt und intToString Java Basics - Anfänger-Themen 2
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
nbergmann The type JOptionPane is not accessible. Java Basics - Anfänger-Themen 4
M Type Erasure in Java Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
P Jackson mapper.readValue mit generischem Type Java Basics - Anfänger-Themen 10
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
D Klassen undefined for the type 'object' Java Basics - Anfänger-Themen 2
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
S Fehler: Editor does not contain a main type Java Basics - Anfänger-Themen 3
G Programm wird nicht ausgeführt: Editor does not contain a main type Java Basics - Anfänger-Themen 10
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
K VerketteteListen unexpected type Fehler Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
T Compiler-Fehler Null type safety (type annotations) Java Basics - Anfänger-Themen 5
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
V RMI - argument type mismatch Java Basics - Anfänger-Themen 1
S Selection does not contain a main type! Java Basics - Anfänger-Themen 5
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
S Selection does not contain a main type Java Basics - Anfänger-Themen 12
H enum Type Java Basics - Anfänger-Themen 6
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
I Erste Schritte Eclipse - Does not contain a main type Java Basics - Anfänger-Themen 8
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
C MIME-Type null Java Basics - Anfänger-Themen 4
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
G default class type Java Basics - Anfänger-Themen 3
J Type inference Java Basics - Anfänger-Themen 26
C Warning: Type safety: Potential heap pollution via varargs parameter array Java Basics - Anfänger-Themen 5
Joew0815 Compiler-Fehler Unexpected Type - Problem mit Variablen rechnen Java Basics - Anfänger-Themen 7
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
O unexpected type - weiß nicht weiter! Java Basics - Anfänger-Themen 3
M Datentypen problem!! Unexpected type in bleuj Java Basics - Anfänger-Themen 2
P Compiler-Fehler unexpected type - Stehe auf dem Schlauch Java Basics - Anfänger-Themen 3
M This method must return a result of type int Java Basics - Anfänger-Themen 13
T Unhandled exception type Java Basics - Anfänger-Themen 2
J unexpected type variable/value Java Basics - Anfänger-Themen 2
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
D Compiler-Fehler void is an invalid type for the variable Java Basics - Anfänger-Themen 5
H LocationReferenceImpl cannot be resolved to a type Java Basics - Anfänger-Themen 5
K unexpected type variable/value Java Basics - Anfänger-Themen 7
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
K Erste Schritte selection does not contain a main type Java Basics - Anfänger-Themen 3
M Objekt Cannot instantiate the type ... Java Basics - Anfänger-Themen 10
S this method must return a result of type double Java Basics - Anfänger-Themen 2
L Type/Cast Problem Java Basics - Anfänger-Themen 6
A Variablen Type safety Warnung beseitigen Java Basics - Anfänger-Themen 3
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Editor does not contain a main type Java Basics - Anfänger-Themen 3
E Datentypen type cast problem (int, byte,) Java Basics - Anfänger-Themen 5
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
V Eclipse "Selection does not contain a main type" Java Basics - Anfänger-Themen 13
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
J Color cannot be resolved to a type Java Basics - Anfänger-Themen 4
B Undefined for the type... Java Basics - Anfänger-Themen 15
D Unhandled Exception type IOException in Constructor Java Basics - Anfänger-Themen 1
B Selection does not contain a main type Java Basics - Anfänger-Themen 2
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
B Type von Class erhalten Java Basics - Anfänger-Themen 2
G incompatibel return type bei vererbung Java Basics - Anfänger-Themen 18
J String cannot be resolved to a type Java Basics - Anfänger-Themen 6
C Editor does not contain a main type Java Basics - Anfänger-Themen 7
J Type-Casting Java Basics - Anfänger-Themen 8
M 'void' type not allowed Java Basics - Anfänger-Themen 18
lumo lösen von: "Type safety"? Java Basics - Anfänger-Themen 4
B method intValue() is undefined for the type String (?) Java Basics - Anfänger-Themen 4
H wieso fehler ? must return a type of int. Java Basics - Anfänger-Themen 4
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G raw type Java Basics - Anfänger-Themen 2
N Java Sound - Unsupported control type Java Basics - Anfänger-Themen 2
J System.in.read(): Unhandled exception type IOException Java Basics - Anfänger-Themen 12
S falscher return type ? Java Basics - Anfänger-Themen 4
F The type . is ambiguous Java Basics - Anfänger-Themen 2
A Generics Raw Type Java Basics - Anfänger-Themen 9
S type safety, conversions Java Basics - Anfänger-Themen 6
G Kein main Type? Java Basics - Anfänger-Themen 3
S Type safety bei einer ArrayList Java Basics - Anfänger-Themen 2
N invalid method declaration; return type required Java Basics - Anfänger-Themen 4
S Type safety Java Basics - Anfänger-Themen 6
R Eclipse: This method must return a result of type double. Java Basics - Anfänger-Themen 2
M Fehlermeldung (the method add(OE) in the type Abteilung.) Java Basics - Anfänger-Themen 2
O must be an array type (String array füllen) Java Basics - Anfänger-Themen 7
M method xxx() from the type xxx is deprecated Java Basics - Anfänger-Themen 3
G typeof is undefined for the type "Klassenname" Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben