2015-09-30 3 views
4

Я должен разработать программу, которая получает 3 пользователя-входы в виде:печати специальный вход пользователя в Java

Name1 (any number of spaces) age1 
Name2 (any number of spaces) age3 
Name3 (any number of spaces) age3 

Затем печать линии, которая имеет самый высокий возраст (предположим name3 Age3 имел самый высокий возраст I» d распечатать его строку).

Мой код:

import java.util.*; 
public class RankAge{ 
    public static void main(String[] args){ 
    System.out.println("Enter 3 different names and the age of each person respectively:"); 
    Scanner sc = new Scanner(System.in); 
    String n1 = sc.nextLine(); 
    String n2 = sc.nextLine(); 
    String n3 = sc.nextLine(); 

    } 
} 

Я знаю, как сканировать пользовательские-входы, но я не знаю, как это сделать сравнение числа в приобретаемой строке напечатать определенную один (также так может быть любое количество пробелов, которые мне кажутся еще более сложными).

+0

Вы можете разбить строку на любое количество пробелов, используя 'n1.split (" \\ s + ")'. –

ответ

2

Вы можете использовать split получить возраст человека:

String age = "Jon  57".split("\\s+")[1]; // contains "57" 

Вы можете использовать Integer.parseInt(age) получить возраст человека, как число.


Если вам нужно разрешить пользователю вводить имя с пробелами, вы можете отрегулировать число в квадратных скобках ( []). Например, [2] потребует от пользователя ввода имени и фамилии.

+0

удалось сделать это с вашей помощью. Благодаря! – Win

+0

Добро пожаловать! – frenchDolphin

0

+1 потому что вначале это выглядело очень просто, но когда я начал внедрять запутанные сложности. Вот полное решение вашей проблемы,

import java.util.*; 

public class RankAge { 

    public static void main(String s[]){ 
     System.out.println("Enter 3 different names and the age of each person respectively:"); 
     Scanner sc = new Scanner(System.in); 
     String n[] = new String[3]; 
     for(int i=0;i<3;i++){ 
      n[i] = sc.nextLine(); 
     } 

     int age[] = new int[3]; 

     age[0] = Integer.parseInt(n[0].split("\\s+")[1]); 
     age[1] = Integer.parseInt(n[1].split("\\s+")[1]); 
     age[2] = Integer.parseInt(n[2].split("\\s+")[1]); 
     int ageTemp[] = age; 
     for(int i=0;i<age.length;i++){ 
      for(int j=i+1;j<age.length;j++){ 
       int tempAge = 0; 
       String tempN = ""; 
       if(age[i]<ageTemp[j]){ 
        tempAge = age[i]; 
        tempN = n[i]; 
        age[i] = age[j]; 
        n[i] = n[j]; 
        age[j] = tempAge; 
        n[j] = tempN; 
       } 
      } 
     } 

     for(int i=0;i<3;i++){ 
      System.out.println(n[i]); 
     } 

    } 

} 
2

Удалось сделать это с предложением французского дельфина. Это код, который я использовал (он довольно новичок):

import java.util.*; 
public class RankAge{ 
    public static void main(String[] args){ 
    System.out.println("Enter 3 different names and the age of each person respectively:"); 
    Scanner sc = new Scanner(System.in); 
    String n1 = sc.nextLine(); 
    String a1 = n1.split("\\s+")[1]; 
    String n2 = sc.nextLine(); 
    String a2 = n2.split("\\s+")[1]; 
    String n3 = sc.nextLine(); 
    String a3 = n3.split("\\s+")[1]; 

    if(Integer.parseInt(a1) > Integer.parseInt(a2)){ 
    } if(Integer.parseInt(a1) > Integer.parseInt(a3)){ 
      System.out.println(n1); 
    }else if(Integer.parseInt(a2) > Integer.parseInt(a3)){ 
     System.out.println(n2); 
    }else{ 
     System.out.println(n3); 
    } 
    } 
} 
Смежные вопросы