Just nu i M3-nätverket
Jump to content

Problem med Scanner


HalSoul

Recommended Posts

Har ett litet program som ska skapa mappar, men får hela tiden problem med att återgå till menyn efter att en funktion är körd, får ett inmatningsfel hela tiden.

 

Vill helt enkelt kunna återgå till menyn efter varje case har körs utan att få inmatnings fel =)

 

Är lite grön när det gäller Java, bara en notis =)

 

Koden:

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class folders {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
	// Menyn. Skrivs ut och ska visas efter att varje val är slutfört.
	MainMenu();
}

public static int MainMenu() throws IOException{  
        Scanner scanner = new Scanner (System.in);
        int selection = 0;
        int x = 0;

        while(x==0){   
        	System.out.println("\n|----- MENU ------------------------|");
		System.out.println("|  Nr                               |");
		System.out.println("| [0] Exit                          |"); // Avsluta programmet
		System.out.println("| [1] Create Folder                 |"); // Skapar en mapp
		System.out.println("|-----------------------------------|");
		System.out.print("Run nr: "); 
            	selection = scanner.nextInt();  

	       switch (selection){

	           case 1:System.out.println("\nFolder Creating\n---------------");
	           	createFolder();
	                x = 1;
	                break;


	           case 2:System.out.println("\nCreate Folders Using Template\n-----------------------------");
	                x = 1;
	                break;


	           case 0:System.out.println("\nExit Successful");
	                System.exit(0);

	           default:System.out.println("\nPlease enter a valid selection.");

	        };
        }  
        return selection;
    }

/**
 * Denna funktion skapar mappar.
 * @throws IOException 
 */
private static void createFolder() throws IOException{
	// Hämtar sökväg till lokationen för den nya mappen
	String p = getFolderPath();

	// Skapar flera mappar i en sökväg
	boolean success = (new File(p)).mkdirs();
	// Om det fick bra
	if (success) {
		System.out.println("Directories: " + p + " created");
	} 
	// Om det inte gick så bra
	else {
		System.out.println("Directories where not created. Invalid path or folder name(s)!");
	}
}

/**
 * Denna funktionen väntar på en inmatning och tillsätter sökvägen och mapp 
 * till den mapp som ska skapas
 * @return sökvägen till filen/mappen
 */
public static String getFolderPath() throws IOException{
	// skapar en ny scanner
	Scanner in = new Scanner(System.in); 
	String path = null;
	// information till användaren
	System.out.println("Enter folderpath: ");
	// Läser in en sträng
	path = in.nextLine();
	// strängar läsaren
	in.close();
	// returnerar sökvägen
	return path;
}
}

 

Output:

|----- MENU ------------------------|

| Nr |

| [0] Exit |

| [1] Create Folders |

|-----------------------------------|

Run nr: 1

 

Folder Creating

---------------

Enter folderpath:

c:\1

Directories: c:\1 created

 

|----- MENU ------------------------|

| Nr |

| [0] Exit |

| [1] Create Folders |

|-----------------------------------|

Run nr: Exception in thread "main" java.util.NoSuchElementException

at java.util.Scanner.throwFor(Unknown Source)

at java.util.Scanner.next(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at folders.MainMenu(folders.java:34)

at folders.createFolder(folders.java:79)

at folders.MainMenu(folders.java:39)

at folders.main(folders.java:18)

 

Kör här funktionen för att skapa mapp, mappen skapas och MainMenu() får inmatnings fel... urg.

Link to comment
Share on other sites

Tycker det borde det, i och med att de skapas och stängs på nytt vid varje inmatning.

 

lade till en close() på scannern i menyn, men gjorde ingen skillnad...

 

Men classen kanske inte är gjord för denna typ av funktionallitet :-(

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...