Java 使用定界符和下一行
Java useDelimiter and nextLine
我正在尝试创建一个使用定界符分隔字符串输入(windows 路径)的程序。但是我的程序似乎忽略了分隔符。
我期待的结果:
Skriv in sökvägen: C://Windows/System/
C
Windows
System
我得到的结果:
Skriv in sökvägen: C://Windows/System/
C://Windows/System/
我在下面的代码中遗漏了什么?
import java.util.Scanner;
public class Sokvagen
{
public static void main(String[] args)
{
//String representing pathway
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag = userInput.nextLine();
//Print the result
System.out.println(sokvag);
userInput.close();
}
}
userInput.nextLine()
总是 returns 整行,而 userInput.next()
returns 使用您的定界符的标记。但是随后您需要逐个令牌读取循环令牌中的输入,直到...
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws Exception
{
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
do
{
//Input
sokvag = userInput.next();
//Print the result
System.out.println(sokvag);
}
while (????);
userInput.close();
}
}
问题是,您不知道用户何时输入最后一个令牌(路径的最后一部分)。
所以最好将整个输入读成一行,然后将其分成几部分。例如:
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws Exception
{
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag = userInput.nextLine();
String[] parts = sokvag.split("[:/\s]+");
//Print the result
System.out.println(Arrays.toString(parts));
userInput.close();
}
}
当然你也可以遍历parts-array逐行输出内容
我发现我应该使用 3 个字符串并使用 next,一切正常。
//String representing pathway
String sokvag1, sokvag2, sokvag3;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag1 = userInput.next();
sokvag2 = userInput.next();
sokvag2 = userInput.next();
//Print the result
System.out.println(sokvag1);
System.out.println(sokvag2);
System.out.println(sokvag3);
userInput.close();
我正在尝试创建一个使用定界符分隔字符串输入(windows 路径)的程序。但是我的程序似乎忽略了分隔符。
我期待的结果:
Skriv in sökvägen: C://Windows/System/
C
Windows
System
我得到的结果:
Skriv in sökvägen: C://Windows/System/
C://Windows/System/
我在下面的代码中遗漏了什么?
import java.util.Scanner;
public class Sokvagen
{
public static void main(String[] args)
{
//String representing pathway
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag = userInput.nextLine();
//Print the result
System.out.println(sokvag);
userInput.close();
}
}
userInput.nextLine()
总是 returns 整行,而 userInput.next()
returns 使用您的定界符的标记。但是随后您需要逐个令牌读取循环令牌中的输入,直到...
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws Exception
{
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
do
{
//Input
sokvag = userInput.next();
//Print the result
System.out.println(sokvag);
}
while (????);
userInput.close();
}
}
问题是,您不知道用户何时输入最后一个令牌(路径的最后一部分)。
所以最好将整个输入读成一行,然后将其分成几部分。例如:
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws Exception
{
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag = userInput.nextLine();
String[] parts = sokvag.split("[:/\s]+");
//Print the result
System.out.println(Arrays.toString(parts));
userInput.close();
}
}
当然你也可以遍历parts-array逐行输出内容
我发现我应该使用 3 个字符串并使用 next,一切正常。
//String representing pathway
String sokvag1, sokvag2, sokvag3;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag1 = userInput.next();
sokvag2 = userInput.next();
sokvag2 = userInput.next();
//Print the result
System.out.println(sokvag1);
System.out.println(sokvag2);
System.out.println(sokvag3);
userInput.close();