【问题标题】:Need help for get string in java在java中获取字符串需要帮助
【发布时间】:2017-09-21 11:24:17
【问题描述】:

我想在输入带有数组和循环的名称时得到名字

示例

Enter the name :

1. Alvin Indra
2. Sada Rika

输出

1. Alvin
2. Sada

代码

public static void main(String[] args) {
    int n;
    String teman[],namadepan[];
    Scanner sc = new Scanner(System.in);
    Scanner x = new Scanner(System.in);

    System.out.print("Put how many friends : ");
    n = sc.nextInt();

    teman = new String[n];
    namadepan = new String[n];
    for(int i=0;i<n;i++){
        System.out.print("Friend Of-"+(i+1)+" : ");
        teman[i] = x.nextLine();
    }
    System.out.print("\n");
    System.out.println("First Name : ");
    for(int i=0;i<n;i++){
        if(teman[i] == ' '){ // this is where I need help
            System.out.println((i+1)+". "+teman[i].substring(0,i));
        }
    }
}

【问题讨论】:

  • 这还能编译吗? teman[i] == ' ' 不是一个有效的声明。
  • 没有这个不同:(
  • @Gendarme 在这种情况下if(teman[i] == ' ') 会做什么?
  • @ChitogeKirisaki if(teman[i] == ' ') 是什么意思呢?顺便说一句,它不会像已经指出的那样编译。
  • 我的意思是你不应该比较字符串。即使您可以将字符串与 == 进行比较,代码仍然没有意义 - 所以这不是一个重复的问题。

标签: java arrays for-loop if-statement


【解决方案1】:

给你

String name = "John Smith";
System.out.println(name.split(" ")[0]);

使用它将替换第二个 for 循环,您无需循环遍历每个字母以查找空格,您只需在字符串上使用 split 方法并指定要拆分字符串的字符,然后调用第一个元素。

更新了完整的实现

import java.util.Scanner;

public class testest {
    public static void main(String[] args){
        int n;
        String teman[],namadepan[];
        Scanner sc = new Scanner(System.in);
        Scanner x = new Scanner(System.in);

        System.out.print("Put how many friends : ");
        n = sc.nextInt();

        teman = new String[n];
        namadepan = new String[n];

        for(int i=0;i<n;i++){
            System.out.print("Friend Of-"+(i+1)+" : ");
            teman[i] = x.nextLine();
        }

        System.out.print("\n");

        for(int i=0;i<n;i++){
            System.out.println("First Name : ");
            System.out.println(teman[i].split(" ")[0]);
            System.out.print("\n");
        }
    }
}

【讨论】:

  • 不,我不能使用数组和扫描仪输入
  • @ChitogeKirisaki 为什么不能拆分成数组?
  • 他说他想得到输入而不是使用"John Smith"。他是误会。 @ChitogeKirisaki 这个答案告诉您使用 String#split 而不是使用循环。他并没有告诉您在代码中手动编写字符串。使用扫描仪很好。
  • 为您添加了完整的解决方案,向您展示它应该如何实施。
  • 是否可以使用子字符串?名下?
【解决方案2】:

您可能正在寻找在 java 中使用 String 类的 containsindexOf 方法,将它们用作:

if (teman[i].contains(" ")) {
    System.out.println((i + 1) + ". " + teman[i].substring(0, teman[i].indexOf(" ")));
}

【讨论】:

    最近更新 更多