如何在Java中打印字符串数组的奇偶位置字符?
问题 给定一个长度为N的字符串S,其索引范围为0到N-1,将其偶数索引字符和奇数索引字符打印为一行上两个空格分隔的字符串。 假设输入从索引位置0开始(被认为是偶数) 输入 第一行包含一个整数T(测试用例的数量)。 T个后续行中的每一行i都包含一个字符串S 输出 对于每个字符串S,打印它的偶数索引字符,后跟空格,后跟奇数索引字符 样本输入 二, 黑客 等级 样本输出 Hce-akr Rn ak 我写的代码如何在Java中打印字符串数组的奇偶位置字符?,java,string,loops,Java,String,Loops,问题 给定一个长度为N的字符串S,其索引范围为0到N-1,将其偶数索引字符和奇数索引字符打印为一行上两个空格分隔的字符串。 假设输入从索引位置0开始(被认为是偶数) 输入 第一行包含一个整数T(测试用例的数量)。 T个后续行中的每一行i都包含一个字符串S 输出 对于每个字符串S,打印它的偶数索引字符,后跟空格,后跟奇数索引字符 样本输入 二, 黑客 等级 样本输出 Hce-akr Rn ak 我写的代码 public static void main(String[] args) { S
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
scan.nextLine();
for(int i=0 ; i<T ; i++)
{
String myString = scan.nextLine();
int evn = 0,
odd = 0,
len = myString.length();
char strE[] = new char[50],
strO[] = new char[50];
for(int j=0 ; j<len ; j++)
{
if(j%2 == 0)
{
strE[evn] = myString.charAt(j);
evn++;
}
if(j%2 == 1)
{
strO[odd] = myString.charAt(j);
odd++;
}
}
System.out.print(strE);
System.out.print(" ");
System.out.println(strO);
}
}
但是,这次程序没有产生所需的输出,而是打印了一些垃圾值,如下所示:
[C@5c3f3b9b [C@3b626c6d
[C@3abc8690 [C@2f267610
我的怀疑
1.在第一种情况下,当我使用2条print语句分别打印两个字符串时,每次都得到正确的输出,但HackerRank编译器拒绝了它。为什么?
2.在第二种情况下,当我使用一条打印语句(而不是3条)修改程序以获得所需结果时,程序给出了完全不同的输出和打印的垃圾值!为什么?
以下是黑客银行问题的链接,以获取更多信息:
非常感谢所有的帮助和指导!我可以解决您的第二个问题: --->System.out.print(strE);-->在底部,该方法称为(public void print(char s[]) -->System.out.println(strE+“”+strO);-->在底部,该方法被调用(public void println(String x))请尝试提交以下内容:
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
scan.nextLine();
for (int i = 0; i < T; i++) {
String myString = scan.nextLine();
String even = "";
String odd = "";
for (int j = 0; j < myString.length(); j++) {
if (j % 2 == 0) {
even += myString.charAt(j);
} else {
odd += myString.charAt(j);
}
}
System.out.println(even + " " + odd);
}
Scanner scan=新的扫描仪(System.in);
int T=scan.nextInt();
scan.nextLine();
for(int i=0;i
我得到了正确的输出,它应该满足所有要求。我认为您的代码失败了,因为您最后打印的不是真正的字符串,而且您的数组中有空点对于您的第一个答案,我无法回答您,因为我不知道编译器是如何工作的,但我可以回答您的第二个问题
System.out.print(strE);System.out.print(“”;System.out.println(strO);
之所以有效,是因为System.out.print(char[])
和System.out.println(char[])
会在打印字符数组之前自动将其转换为可读字符串
但是,在第二种情况下,System.out.println(strE+“”+strO);
,您要做的是直接将char数组转换为字符串,它只打印类和数组对象的哈希代码,因为toString()
方法在数组类中没有被重写。您要做的是System.out.println(新字符串(strE)+“+”新字符串(strO));
。它将为您提供所需的结果。Scanner Scanner=new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the no.of test-cases:");
int t = scanner.nextInt();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the String(s)");
for (int i = 0; i < t; i++) {
String myString = br.readLine();
String even = "";
String odd = "";
for (int j = 0; j < myString.length(); j++) {
if (j % 2 == 0) {
even += myString.charAt(j);
} else {
odd += myString.charAt(j);
}
}
System.out.println(even);
System.out.println(odd);
}
scanner.close();
System.out.println(“输入测试用例的编号:”);
int t=scanner.nextInt();
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
System.out.println(“输入字符串)”;
for(int i=0;i
这将读取我们将要处理的测试用例的数量
String string[] = new String[T];
for(int i = 0; i<T; i++){
string[i] = scan.next();
用空格分隔序列
for(int j = 1; j<string[temp].length(); j = j+2){
System.out.print(string[temp].charAt(j));
}
System.out.println();
for(intj=1;jimportjava.io.*;
导入java.util.*;
公共类解决方案{
私有静态无效f(字符串s){
//TODO自动生成的方法存根
char c[]=s.toCharArray();
int i,j;
对于(i=0;i我用两种方法解决了这个问题&两种方法都产生了正确的输出
看一看,如果你有什么问题就告诉我
您可以使用字符串代替字符数组
//char[] even = new char[10000];
String even = "";
让我们看看代码
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
String s = scanner.next();
char[] array = s.toCharArray();
int count=0;
//char[] even = new char[10000];
//char[] odd = new char[10000];
String even = "";
String odd = "";
for(char ch : array){
if(count%2 == 0){
even = even + ch;
}else{
odd = odd + ch;
}
count++;
}
count = 0;
System.out.println(even + " " + odd);
}
输出:
hacker
hce akr
hacker
hce akr
不需要额外的字符[]或字符串来存储奇偶位置字符,我们可以使用适当的条件直接打印它们
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args){
String s = scanner.next();
char[] array = s.toCharArray();
int count=0;
for(char ch : array){
if(count%2 == 0){
System.out.print(ch);
}
count++;
}
count = 0;
System.out.print(" ");
for(char ch : array){
if(count%2 != 0){
System.out.print(ch);
}
count++;
}
count = 0;
}
输出:
hacker
hce akr
hacker
hce akr
试试这个:
public static void main(String[] args) {
System.out.println("Enter string to check:");
Scanner scan = new Scanner(System.in);
String T = scan.nextLine();
String even = "";
String odd = "";
for (int j = 0; j < T.length(); j++) {
if (j % 2 == 0) { //check the position of the alphabet by dividing it by 0
even += T.charAt(j);
} else {
odd += T.charAt(j);
}
}
System.out.println(even + " " + odd);
scan.close();
}
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner pp=new Scanner(System.in);
int n=pp.nextInt();
for(int i=0; i<n; i++)
{
String ip=pp.next();
String re1="",
re2="";
for(int j=0; j<ip.length(); j++)
{
if(j%2 == 0)
{
re1+= ip.charAt(j);
}
if(j%2 == 1)
{
re2+= ip.charAt(j);
}
}
System.out.print(re1+" "+re2);
System.out.println("");
}
}
}
publicstaticvoidmain(字符串[]args){
System.out.println(“输入要检查的字符串:”);
扫描仪扫描=新扫描仪(System.in);
字符串T=scan.nextLine();
字符串偶数=”;
字符串奇数=”;
对于(int j=0;j
**JavaScript版本**
函数processData(输入){
for(设i=1;iprivate static Scanner scanner = new Scanner(System.in);
public static void main(String[] args){
String s = scanner.next();
char[] array = s.toCharArray();
int count=0;
for(char ch : array){
if(count%2 == 0){
System.out.print(ch);
}
count++;
}
count = 0;
System.out.print(" ");
for(char ch : array){
if(count%2 != 0){
System.out.print(ch);
}
count++;
}
count = 0;
}
hacker
hce akr
public static void main(String[] args) {
System.out.println("Enter string to check:");
Scanner scan = new Scanner(System.in);
String T = scan.nextLine();
String even = "";
String odd = "";
for (int j = 0; j < T.length(); j++) {
if (j % 2 == 0) { //check the position of the alphabet by dividing it by 0
even += T.charAt(j);
} else {
odd += T.charAt(j);
}
}
System.out.println(even + " " + odd);
scan.close();
}
** JavaScript version **
function processData(input) {
for (let i = 1; i < input.length; i++) {
printOutput(input[i]);
}
}
function printOutput(input) {
var result = [];
input.length % 2 == 0 ? result[input.length / 2] = ' ': result[Math.ceil(input.length / 2)] = ' ';
for (let i = 0; i < input.length; i++) {
if (i % 2 == 0) {
result[i / 2] = input[i];
}
else {
result[Math.ceil(input.length / 2) + Math.ceil(i / 2)] = input[i];
}
}
console.log(result.join(''));
}
process.stdin.on("end", function () {
processData(_input.split('\n'));
});
import java.io. * ;
import java.util. * ;
public class Solution {
String myString;
public Solution(String myString) {
this.myString = myString;
int len = myString.length();
for (int j = 0; j < len; j++) {
if (j % 2 == 0) {
System.out.print(myString.charAt(j));
}
}
System.out.print(" ");
for (int j = 0; j < len; j++) {
if (j % 2 == 1) {
System.out.print(myString.charAt(j));
}
}
}
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner sc = new Scanner(System. in );
int T = sc.nextInt();
for (int i = 0; i < T; i++) {
String word = sc.next();
Solution sol = new Solution(word);
System.out.println();
}
sc.close();
}
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int T;
T = s.nextInt();
String[] str = new String[T];
int i;
for(i=0;i<T;i++) {
str[i] = s.next();
}
for(i=0;i<T;i++) {
char[] even = new char[5000];
char[] odd = new char[5000];
int ev =0,od=0;
for(int j= 0;j< str[i].length();j++) {
if(j%2== 0) {
even[ev] = str[i].charAt(j);
ev++;
}else {
odd[od] = str[i].charAt(j);
od++;
}
}
String strEven = new String(even);
String strOdd = new String(odd);
System.out.print(strEven.trim());
System.out.print(" ");
System.out.println(strOdd.trim());
}
s.close();
}
}
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner pp=new Scanner(System.in);
int n=pp.nextInt();
for(int i=0; i<n; i++)
{
String ip=pp.next();
String re1="",
re2="";
for(int j=0; j<ip.length(); j++)
{
if(j%2 == 0)
{
re1+= ip.charAt(j);
}
if(j%2 == 1)
{
re2+= ip.charAt(j);
}
}
System.out.print(re1+" "+re2);
System.out.println("");
}
}
}
public class PrintCharacters{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int noOfTestCases = sc.nextInt();
sc.nextLine();
String []inputStrings= new String[noOfTestCases];
for(int i=0;i<noOfTestCases;i++) {
inputStrings[i]=sc.nextLine();
}
for(String str: inputStrings) {
String even ="";
String odd ="";
for(int i=0;i<str.length();i++) {
if(i%2==0) {
even+=str.charAt(i);
}else {
odd+=str.charAt(i);
}
}
System.out.println(even+" "+odd);
}
sc.close();
}
}
Input:
2
Hacker
Rank
Output:
Hce akr
Rn ak
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
while(n>0) {
String str=scan.next();
for(int i=0;i<str.length();i++) {
if(i%2==0) {
System.out.print(str.charAt(i));
}
}
System.out.print(" ");
for(int i=0;i<str.length();i++) {
if(i%2==1) {
System.out.print(str.charAt(i));
}
}
n--;
System.out.println();
}
}