Hallo alle zusammen, könnt ihr mir bitte bei folgender Java-Aufgabe helfen?

... komplette Frage anzeigen

4 Antworten


ich habe echt keine Ahnung

Dann frage mich aber: Wie kommst du dann an diese Aufgabe? Und wieso machst du diese Aufgabe?

Für mich sieht das eben direkt so aus, als hättest du dich mit dem Thema gar nicht befasst und möchtest dich auch nicht wirklich damit befassen. - Falls ich mich täusche, dann kläre mich bitte auf.


Wenn path gleich null ist, dann soll 2 zurückgegeben werden.

Wenn man eine Variable auf null prüfen möchte geht das mit: "== null". Eine Prüfung gibt einen boolean-Ausdruck zurück, und du erhälst somit entweder wahr oder falsch. Was du in einer Bedingungsprüfung: IF verwenden kannst.

Wenn keine Datei gefunden wurde, dann soll 3 zurüuckgegeben werden.

Die Klasse File() stellt hierfür entsprechende Methoden bereit, Stichwort: .exists()

Wenn es beim Lesezugriff IO-Fehler gab, dann soll 4 zurückgegeben werden.

Soetwas löst man über Try-Catch: Versuche es, tritt ein Fehler auf, läuft der Code im Catch-Bereich weiter. - Entsprechend ist eine Rückgabe im Catch-Block möglich um diesen Teil zu lösen:

try {
...
} catch(IOException e) {
   return ...;
}

s

Schreiben Sie zusatzlich eine neue Exception, die Sie WhiteSpaceException.java nennen.
Diese Exception soll in der Methode fileStatus geworfen werden, wenn im Pfad ein Leerzeichen enthalten ist.

Wie man eine Klasse erstellt, sollte dir bereits klar sein. Bei einer eigenen Exception sollte deine Klasse entsprechend von Exception erben.

Eine Prüfung ob im Dateipfad Leerzeichen enthalten sind, lässt sich mit String-Methoden wie: contains() oder matches() umsetzen.


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von javaDuke
19.01.2017, 17:41

Danke für deine Antwort,

ich habe mich bis jetzt rein theoretisch damit beschäftigt.

Nach all euren Anmerkungen habe ich jetzt aber die Lösung (zumindest hoffe ich das sie richtig ist) geschafft.

Danke noch mal!

0

Geh die Fälle der Reihe nach durch und setze sie in entsprechende if-Klauseln und try catch

So in etwa:
if(path==null) {
return 2;
}
try {
int i;
if ((i = path.indexOf (" ") )>-1{
throw WhiteSpaceException ("illegal white space at position "+ i);
}
\\\\\\\\\\\\\\\\Datei Zugriff
}
catch (FileNotFoundException fnf) {
return 3;
}
catch (IOException io){
return 4;
}

Du musst dann noch den Methodenkopf mit "throws WhiteSpaceException" erweitern und die exception-klasse erstellen
Das geht analog zu:
http://stackoverflow.com/questions/1754315/how-to-create-custom-exceptions-in-java

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von javaDuke
19.01.2017, 17:42

Danke für deine Antwort,

ich habe mich bis jetzt rein theoretisch damit beschäftigt.

Nach all euren Anmerkungen habe ich jetzt aber die Lösung (zumindest hoffe ich das sie richtig ist) geschafft.

Danke noch mal!

0

Du solltest es wenigstens probieren.

Die Vorgabe mit dem Pfad = null ist extrem einfach.

Einfach am Anfang der Methode:

// Die verschiedenen Returnwerte werden hier gespeichert
int ret = 1;

// Fall path = null prüfen
if ( path == null) ret = 2 else
{
   // Rest des Codes der Methode
}
return ret;

Aber es bringt Dir doch gar nichts, wenn wir die Aufgabe komplett lösen. Fang an und schreib notfalls PseudoCode als Kommentar wenn Du nicht weißt wie du was hinbekommst.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von javaDuke
19.01.2017, 17:44

Danke für deine Antwort,

ich habe mich bis jetzt rein theoretisch damit beschäftigt.

Nach all euren Anmerkungen habe ich jetzt aber die Lösung (zumindest hoffe ich das sie richtig ist) geschafft.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class Functionality {

public static int fileStatus(String path){
File file = new File(path);

try {
if (path ==null) {
throw new NullPointerException();}

} catch (NullPointerException n){

n.printStackTrace();
return 2;
}

FileInputStream fileInputStream;
try {
fileInputStream = new FileInputStream(file);
} catch (FileNotFoundException e) {

e.printStackTrace();
return 3;
}
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader reader = new BufferedReader(inputStreamReader);
try {
reader.readLine();
} catch (IOException e) {
e.printStackTrace();
return 4;
}

try {
if (path.contains(" ")){

throw new WhiteSpaceException();
}}
catch (WhiteSpaceException w){
w.printStackTrace();
}
return 1;
}}

Danke noch mal!

0

Wenn du keine Ahnung hast, frage ich mich wiso du diese Aufgabe bekommst.

Ich rate dir, dich zunächst mit dem Konzept "exception handling" und "try-catch-Block" auseinander zu setzen. Um eine Grundlage zu schaffen, damit du überhaupt verstehst was wir dir erklären!

Danach sollte die Aufgabe kein Problem sein. Schreibe einfach für jeden Case ein tc-block wobei die Bedingung equalls dem return value entspricht. In den Anwendungsblock kommt dann nur noch die Fallbehandlung.

Viel Glück!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von KnusperPudding
19.01.2017, 15:47

Schreibe einfach für jeden Case ein tc-block

Eine Exception, wie der Name schon sagt, ist eine Ausnahme. Also ein Sonderfall, den man als Ausnahme behandeln muss.

Bei z.B. dem Aufgabenteil, der prüft, ob die Datei existiert oder nicht: Das wäre ja keine Ausnahme und entsprechend wäre auch keine Exception zu provozieren. 

0

Was möchtest Du wissen?