【问题标题】:Swap adjacent element of an array in JAVA [duplicate]在JAVA中交换数组的相邻元素[重复]
【发布时间】:2018-02-24 20:13:33
【问题描述】:

q1:编写一个程序来打印来自给定输入的以下输出=

输入:aaa bbb ccc ddd eee fff ggg hhh iii jjj

输出:bbb aaa ddd ccc fff eee hhh ggg jjj iii

解决方案:

package practice;

import java.io.*;
import java.util.*;

public class happy {
    public static void main(String args[])
    {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        String t;
        String arr[]=new String[n];
        for(int i=0;i<n;i++)
        {
            arr[i]=in.nextLine();
            t=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=t;
        }
        System.out.println(arr);
    }
}

我哪里出错了,谁能用java提供解决方案?

【问题讨论】:

  • 您想交换相邻元素或相邻元素块,除以空格?你能介绍一下你得到的和你期望的吗?
  • [Ljava.lang.String;@55f96302 先生,我在控制台中得到了这个作为输出。我想交换相邻的元素
  • arr 是一个数组,你不能用System.out.println 打印数组——这就是你得到[Ljava.lang.String;@55f96302 的原因。你需要System.out.println(Arrays.toString(arr))

标签: java


【解决方案1】:

使用 Java split() 方法对输入字符串进行拆分,并将输出存储到字符串数组中。从那里开始变得容易。

 Scanner scanner = new Scanner(System.in);
 String [] inputArr = scanner.nextLine().split(" ");
 for(int i = 0; i < inputArr.length; i++)
 {
    if( ( i+1 ) % 2 == 0 )
    {
        String temp = inputArr[i-1];
        inputArr[i-1] = inputArr[i];
        inputArr[i] = temp;
    }
 }

你正在成对地工作。可以通过使用当前元素的模数轻松检查这些对(由于索引的工作方式,将其加 1)。当 if 语句触发时(没有余数时),它只是交换两个元素。

您也可以使用内置方法,如果您想要更简洁、或许更有效的方法,请查看https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html 的 Java 文档。

【讨论】:

    猜你喜欢
    • 2019-11-27
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多