gpt4 book ai didi

java - System.out.println同时打印

转载 作者:行者123 更新时间:2023-12-02 14:08:33 25 4
gpt4 key购买 nike

我正在构建一个简单的程序,该程序使用Ganymed for SSH2库对Linux服务器执行单个命令。这是我的代码...

public class Main {

static Scanner reader = new Scanner(System.in);


public static void main(String[] args) throws IOException, InterruptedException{


String hostname; // = "192.168.1.241";
int port; // = 22
String username; // = "root";
String password;
String cmd; // = "echo 'Hello World'";

//ask user for hostname/IP
System.out.print("Enter hostname or IP: ");
hostname = reader.nextLine();


//ask user for port #
System.out.print("Enter port number: ");
port = reader.nextInt();

//create connection
Connection connect = new Connection(hostname, port);

//ask user for username
System.out.println("Enter Username (best to use 'root'): ");
username = reader.nextLine();

//ask user for password
System.out.println("Enter Password: ");
password = reader.nextLine();


System.out.println("Attempting to log in...");

reader.close();

//establish connection
connect.connect();

//login using password
connect.authenticateWithPassword(username, password);

Thread.sleep(1000);
if (Thread.interrupted()) // Clears interrupted status!
throw new InterruptedException();

Boolean didConnect = connect.isAuthenticationComplete();
if (didConnect==false){
throw new IOException("Authentication Unsucessful \nCheck hostname and port number, then try again.");
}

//open session
Session session = connect.openSession();
System.out.println("Opened session!");




System.out.println("Enter a command to execute: ");
cmd = reader.nextLine();

//execute command
session.execCommand(cmd);


//get output
InputStream stdout = new StreamGobbler(session.getStdout());

BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

String line = br.readLine();
if (line!=null){
System.out.println("Command sent succesfully!" + "\nOutput: " + "\n" + "\n" + line);
}else{
System.out.println("Command sent succesfully!" + "\nNo Output");
}

//close buffered reader
br.close();

//close session
session.close();

//close connection
connect.close();


}



}

由于某些原因...
//ask user for username
System.out.println("Enter Username (best to use 'root'): ");
username = reader.nextLine();

//ask user for password
System.out.println("Enter Password: ");
password = reader.nextLine();

同时打印,我也不知道为什么!使用print ln 时,它还会在完全不同的行上而不是紧挨着它旁边获得用户输入,而使用 print 时,它将在同一行上得到用户输入。

我希望他们先要求用户名,然后再要求密码,将用户输入放在输出旁边。但是,当我询问主机名和端口号时,它们会按我的意愿逐个/按顺序打印。我究竟做错了什么?

最佳答案

完成port = reader.nextInt();之后,您需要放置一个reader.nextLine()来读取具有int的其余行(和换行符)。

//ask user for port #
System.out.print("Enter port number: ");
port = reader.nextInt();
reader.nextInt()不读取换行符或数字之后的任何内容。

添加 reader.nextLine(),然后其余代码应遵循:
reader.nextLine();

//ask user for username
System.out.println("Enter Username (best to use 'root'): ");
username = reader.nextLine();

//ask user for password
System.out.println("Enter Password: ");
password = reader.nextLine();

关于java - System.out.println同时打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com