我正在编写一个程序,允许用户输入他的数据然后输出它。它的3/4是正确的但是当它到达输出地址时它只打印一个字,只能说'Archbishop'来自'Archbishop Street'。我该如何解决这个问题?
import java.util.*;
class MyStudentDetails{
public static void main (String args[]){
Scanner s = new Scanner(System.in);
System.out.println("Enter Your Name: ");
String name = s.next();
System.out.println("Enter Your Age: ");
int age = s.nextInt();
System.out.println("Enter Your E-mail: ");
String email = s.next();
System.out.println("Enter Your Address: ");
String address = s.next();
System.out.println("Name: "+name);
System.out.println("Age: "+age);
System.out.println("E-mail: "+email);
System.out.println("Address: "+address);
}
}
答案 0 :(得分:32)
这种方法很有效,但我不知道如何解释,它是如何运作的。
String s = sc.next();
s += sc.nextLine();
答案 1 :(得分:12)
以这种方式初始化扫描仪,以便使用换行符分隔输入。
Scanner sc = new Scanner(System.in).useDelimiter("\\n");
有关详细信息,请参阅JavaDoc
使用sc.next()获取String中的整行
答案 2 :(得分:11)
我会使用Scanner#nextLine
反对next
来获取address
属性。
此方法返回当前行的其余部分,不包括末尾的任何行分隔符。
由于这会返回由行分隔符分隔的整行,它将允许用户输入任何地址而不受任何约束。
答案 3 :(得分:5)
Scanner的默认分隔符是空格。检查javadoc,了解如何更改此内容。
答案 4 :(得分:5)
String s="Hi";
String s1="";
//For Reading Line by hasNext() of scanner
while(scan.hasNext()){
s1 = scan.nextLine();
}
System.out.println(s+s1);
/*This Worked Fine for me for reading Entire Line using Scanner*/
答案 5 :(得分:4)
不要直接使用System.in
和System.out
,而是使用Console
类 - 它允许您显示提示并读取输入的整行(从而解决您的问题)拨打:
String address = System.console().readLine("Enter your Address: ");
答案 6 :(得分:2)
next()
只能读取输入直到空格。它无法读取由空格分隔的两个单词。此外,next()
在读取输入后将光标放在同一行。
nextLine()
读取包含单词之间空格的输入(即,它读取到行\n
的末尾)。读取输入后,nextLine()
将光标定位在下一行。
要阅读整行,您可以使用nextLine()
答案 7 :(得分:2)
exponential
仅将输入存储到第一个令牌。如果有两个单词“ Hi there”,则表示有两个用空格分隔的标记(定界符)。每次调用next()方法时,它只会读取一个令牌。
如果输入为“嗨,那里!”
using namespace std;
int exponential_input_array[] = {6,7,16};
class exponential{
private:
double a_1;
double a_2;
int list[2] = {};
public:
exponential(int list_[]){ // <-- same as int* list_ ...
// cant assign an int* to an int[], so copy the values manually...
for(int i = 0; i < 2; ++i) { list[i] = list_[i]; }
or:
std::copy(list_, list_+2, list);
a_1 = list_[0];
a_2 = list_[1];
}
int print_data() const {
cout << "a_1 is: " << a_1 << endl;
cout << "a_2 is: " << a_2 << endl;
return 0;
}
};
int main(){
exponential exponential_object(exponential_input_array);
exponential_object.print_data();
}
输出
嗨
因此,如果您同时使用这两个单词,则需要再次调用next()
以获取下一个对于较长的字符串输入而言效率低下的令牌
Scanner scan = new Scanner(System.in);
String str = scan.next()
System.out.println(str);
会抓住用户输入的整行,即使有空格也是如此
next()
输出
你好!
答案 8 :(得分:2)
我们可以使用scan.nextLine轻松完成。它将读取剩余的输入直到结束。然后将其分配给您的变量。整个句子可以轻松打印 。以下是您更好理解的示例。
String s = "HackerRank ";
Scanner scan = new Scanner(System.in);
String s2;
scan.nextLine(); // read the rest of the line of input (newline character after the double token).
s2 = scan.nextLine();
/* Concatenate and print the String variables on a new line integer variables on a new line;
System.out.println(s + s2);
scan.close();
} }
答案 9 :(得分:2)
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
String s="";
while(scan.hasNext())
{
s=scan.nextLine();
}
System.out.println("String: " +s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
答案 10 :(得分:1)
我尝试了以下代码,但这并没有停止,因为没有中断条件所以它总是在等待输入,可能是你可以为休息添加条件
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
double d = scan.nextDouble();
String s="";
while(scan.hasNext())
{
s=scan.nextLine();
}
System.out.println("String: " +s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
}
答案 11 :(得分:0)
我将令牌分隔符设置为换行符模式,读取下一个令牌,然后将分隔符放回原来的状态。
public static String readLine(Scanner scanner) {
Pattern oldDelimiter = scanner.delimiter();
scanner.useDelimiter("\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029]");
String r = scanner.next();
scanner.useDelimiter(oldDelimiter);
return r;
}
答案 12 :(得分:0)
要获得整个地址
s.nextLine();//read the rest of the line as input
前
System.out.println("Enter Your Address: ");
String address = s.next();
答案 13 :(得分:0)
下面是使用Java Scanner类读取标准输入行的示例代码。
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(s);
scan.close();
}
}
输入:
Hello World
输出:
Hello World
答案 14 :(得分:0)
&#34;它只打印一个单词,只允许说#大主教&#39;来自&#39; Archbishop Street&#34;
它只打印这个单词,因为扫描程序的功能如next(),nextInt()等只能在时间读取一个标记。因此,此函数读取并返回下一个标记。
For example if you have: x y z
s.next() will return x
s.nextLine() y z
如果你想阅读整行代码,请回到你的代码&#34; Archbishop Street&#34;
String address = s.next(); // s = "Archbishop"
Then address += s.nextLine(); // s = s + " Street"
答案 15 :(得分:0)
下面的代码应该做yoiu正在寻找的东西:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println(s);
scan.close();
}
答案 16 :(得分:0)
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
s += scan.nextLine();
System.out.println("String: " + s);
}
}
答案 17 :(得分:0)
java.util.Scanner; util-程序包,Scanner-类
next()
读取空格之前的字符串。到达第一个空格后,它无法读取任何内容。nextLine()
读取整行。读取直到该行的末尾或“ / n”。
注意:不是下一行(示例)
我的人生使命不仅是为了生存,而且要蓬勃发展。
并为此充满热情,同情心和幽默感。
(输出)
我的
我的人生使命不仅是为了生存,而且要蓬勃发展;
技巧:
如果要阅读下一行,请检查Java has
方法。
while (scanner.hasNext()) {
scan.next();
}
while (scanner.hasNext()) {
scan.nextLine();
}
答案 18 :(得分:0)
next()直到遇到相遇空间为止,然后将nextLine()读取到该行的末尾。
Scanner scan = new Scanner(System.in);
String address = scan.next();
s += scan.nextLine();
答案 19 :(得分:0)
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
str += scanner.readLine();
String str = Scanner.next(); ===>它获取该行的第一个单词(hello world!=>“ hello”) str + = Scanner.nextLine(); ===>此方法返回当前行的其余部分,但不包括末尾的任何行分隔符。 (hello world !! =>“ world !!”)
答案 20 :(得分:-1)
我有同样的问题。这应该适合你:
s.nextLine();
答案 21 :(得分:-1)
您也可以使用
var superobjects = [];
var success_callback = function(result) {
superobjects.push(result);
};
var requests = [];
console.log(data);
for (var i = 0; i < data.length; i++) {
(function(i, data) {
requests.push(jQuery.ajax({
url: wpApiSettings.root + 'superplugin/v1/superdooperendpoint/' + api_key + "/" + data[i].start_date + "/" + data[i].end_date,
method: 'GET',
beforeSend: function(xhr) {
// Set nonce here
xhr.setRequestHeader('X-WP-Nonce', wpApiSettings.nonce);
},
success: function(result) {
success_callback({
start_date: data[i].start_date,
end_date: data[i].end_date,
span: data[i].span,
result: result
});
}
}));
})(i, data);
};
setTimeout(function() {
console.log(superobjects)
}, 2222);
jQuery.when.apply(undefined, requests).then(function(result) {});
答案 22 :(得分:-2)
使用nextLine()
代替next()
将句子作为字符串输入。
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
答案 23 :(得分:-4)
你可以这样做:
class MyStudentDetails{
public static void main (String args[]){
Scanner s = new Scanner(System.in);
System.out.println("Enter Your Name: ");
String name = s.nextLine();
System.out.println("Enter Your Age: ");
String age = s.nextLine();
System.out.println("Enter Your E-mail: ");
String email = s.nextLine();
System.out.println("Enter Your Address: ");
String address = s.nextLine();
System.out.println("Name: "+name);
System.out.println("Age: "+age);
System.out.println("E-mail: "+email);
System.out.println("Address: "+address);
}
}