2017-07-25 78 views
0

我想在本系的单个代码来获得多个输入.. 例如在C++中,我们可以有什么样子 -是否有可能在java中获得多行输入?

int a,b,c; 
cin>>a>>b>>c; 

是否有可能在java中也?

+0

我不敢相信你没有使用类似“java同时赋值多个变量”的东西 - 前8个结果都是堆栈溢出! :) –

+3

可能重复[Java - 同时将两个表达式分配给单个变量](https://stackoverflow.com/questions/3996593/java-assigning-two-expressions-to-a-single-variable-simultaneously) –

+0

可能重复的[如何在java中打印多个可变行](https://stackoverflow.com/questions/23584563/how-to-print-multiple-variable-lines-in-java) –

回答

0

如果我理解你的问题正确,您正在寻找这样的事情:

a = b = c = 3; 

这像这样被评价:

a = (b = (c = 3)) 

而且是相同的:

c = 3; 
b = c; 
a = b; 
2

您可以使用阵列来实现此目的,例如:

public static void main(String[] args) { 
     int[] values = new int[3]; 
     Scanner in = new Scanner(System.in); 
     for(int i = 0; i < values.length; i++) { 
      values[i] = in.nextInt(); 
     } 
     System.out.println(Arrays.toString(values)); 
    } 

UPDATE 2

在java中8的上述溶液可具有较短的版本:

Scanner in = new Scanner(System.in); 
Integer[] inputs = Stream.generate(in::nextInt).limit(3).toArray(Integer[]::new); 

UPDATE 1

还有另一种方法,这是更接近cin

public class ChainScanner { 
     private Scanner scanner; 

     public ChainScanner(Scanner scanner) { 
      this.scanner = scanner; 
     } 

     public ChainScanner readIntTo(Consumer<Integer> consumer) { 
      consumer.accept(scanner.nextInt()); 
      return this; 
     } 

     public ChainScanner readStringTo(Consumer<String> consumer) { 
      consumer.accept(scanner.next()); 
      return this; 
     } 
    } 

    public class Wrapper { 
     private int a; 
     private int b; 
     private String c; 

     public void setA(int a) { 
      this.a = a; 
     } /* ... */ 
    } 

    public static void main(String[] args) { 
     ChainScanner cs = new ChainScanner(new Scanner(System.in)); 
     Wrapper wrapper = new Wrapper(); 

     cs.readIntTo(wrapper::setA).readIntTo(wrapper::setB).readStringTo(wrapper::setC); 

     System.out.println(wrapper); 
    } 
+0

但如果想要整数之间的字符,例如在C++中 - int m,n; char c; c >> >> m >> c >> n; – hitain09

+0

@ hitain09一个解决方案就是使''''''类型的'values',从'in.next()'的输入中读取,然后进行转换,例如'Integer.valueOf(values [1])' – Adrian

+0

谢谢你,先生......这是有益的! – hitain09

相关问题