java字符串打印

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字符串打印相关的知识,希望对你有一定的参考价值。

c语言中字符串用%s打印,java字符串如何打印,例如c语言中 char a="nbvc",printf("%s",a);java中如何打印

JAVA也是可以按格式化输出的,char []str="asas"; System.out.printf("%s\n",str); 参考技术A System.out.println();
查下API把,代表输出,还有一个
System.in 代表输入
参考技术B 你说的是格式化输出吧, System.out.printf("%s", "nbvc"); 参考技术C 直接打印啊;例:
String a = "abcde";
在main方法中
system.out.println(a);
参考技术D string s="aaaa";system.out.println(s);

Java:打印字符串中的唯一字符

【中文标题】Java:打印字符串中的唯一字符【英文标题】:Java: Print a unique character in a string 【发布时间】:2017-04-15 10:59:34 【问题描述】:

我正在编写一个程序,它将打印字符串中的唯一字符(通过扫描仪输入)。我创建了一种方法来尝试完成此操作,但我不断获取不重复的字符,而不是字符串唯一的一个(或多个字符)。我只想要唯一的字母。

这是我的代码:

import java.util.Scanner;
public class Sameness
   public static void main (String[]args)
   Scanner kb = new Scanner (System.in); 
     String word = "";

     System.out.println("Enter a word: ");
     word = kb.nextLine();

     uniqueCharacters(word); 


    public static void uniqueCharacters(String test)
      String temp = "";
         for (int i = 0; i < test.length(); i++)
            if (temp.indexOf(test.charAt(i)) == - 1)
               temp = temp + test.charAt(i);
         
      

    System.out.println(temp + " ");

   
            

这是上面代码的示例输出:

Enter a word: 
nreena
nrea 

预期的输出是:ra

【问题讨论】:

'nreena' 的预期输出是什么? 但是e 是重复的,你仍然会得到它。期望的输出是ra吗? 无论如何,我会做类似char[] array = test.toCharArray(); 之类的操作,然后为test 中的每个字母循环遍历array,如果没有匹配项,请执行temp = temp + test.charAt(i); 是的,所需的输出是“ra”。 一旦你添加了一个字符,你并没有在发现它多次出现时删除现有的字符。 【参考方案1】:

根据你想要的输出,你必须替换一个最初已经添加的字符,当它以后有重复时,所以:

public static void uniqueCharacters(String test)
    String temp = "";
    for (int i = 0; i < test.length(); i++)
        char current = test.charAt(i);
        if (temp.indexOf(current) < 0)
            temp = temp + current;
         else 
            temp = temp.replace(String.valueOf(current), "");
        
    

    System.out.println(temp + " ");


【讨论】:

高效 非常感谢! 是否需要else块..? @Suree,这是必需的。基本上,else 块正在删除一个最初被视为唯一的字符,但一旦发现重复的字符就应该删除。 @lmiguelvargasf,实际上 else 阻止删除 temp 中每第二个出现的字符。 temp.indexOf(current) 也在检查最初在临时字符串中被视为唯一的字符。因此,不需要 else 块。我已经检查过了。【参考方案2】:

虽然要找到解决方案,但我建议您尝试使用更好的数据结构,而不仅仅是字符串。然而,您可以使用else 简单地修改您的逻辑以删除已经存在的重复项,如下所示:

public static void uniqueCharacters(String test) 
        String temp = "";
        for (int i = 0; i < test.length(); i++) 
            char ch = test.charAt(i);
            if (temp.indexOf(ch) == -1) 
                temp = temp + ch;
             else 
                temp.replace(String.valueOf(ch),""); // added this to your existing code
            
        

        System.out.println(temp + " ");

    

【讨论】:

看起来很有趣,但我的答案和你的看起来几乎完全一样,只是变量的名称发生了变化。不过,我在可以使用的时候使用了这个变量,也就是说,我不会多次重复test.charAt(i) 正确的不应该重复使用它。只是试图优化 OPs 代码。错过了。【参考方案3】:

我会将字符串的所有字符存储在一个数组中,您将循环检查当前字符是否多次出现在那里。如果没有,则将其添加到 temp。

public static void uniqueCharacters(String test) 
    String temp = "";
    char[] array = test.toCharArray();
    int count; //keep track of how many times the character exists in the string

    outerloop: for (int i = 0; i < test.length(); i++) 
        count = 0; //reset the count for every new letter
        for(int j = 0; j < array.length; j++) 
            if(test.charAt(i) == array[j])
                count++;
            if(count == 2)
                count = 0;
                continue outerloop; //move on to the next letter in the string; this will skip the next two lines below
            
        
        temp += test.charAt(i);
        System.out.println("Adding.");
        
    System.out.println(temp);

我添加了 cmets 以获得更多细节。

【讨论】:

【参考方案4】:

如何应用 KISS 原则:

public static void uniqueCharacters(String test) 
    System.out.println(test.chars().distinct().mapToObj(c -> String.valueOf((char)c)).collect(Collectors.joining()));

【讨论】:

与上述解决方案相比,这是执行时间最短的最佳答案。【参考方案5】:
import java.util.*;
import java.lang.*;
class Demo

public static void main(String[] args)


Scanner sc=new Scanner(System.in);
System.out.println("Enter String");
String s1=sc.nextLine();
 try
HashSet<Object> h=new HashSet<Object>();
for(int i=0;i<s1.length();i++)

h.add(s1.charAt(i));

Iterator<Object> itr=h.iterator();
  while(itr.hasNext())
   System.out.println(itr.next());
    
    
    catch(Exception e)
    
    System.out.println("error");
    


【讨论】:

你能补充一些解释吗?谢谢! HashSet 不支持重复值我将每个字符都添加到 hashset 中,这样重复值会自动解决。【参考方案6】:

例如,接受的答案不会通过所有测试用例

输入-"aaabcdd"

想要的输出-"bc" 但接受的答案将给出 -abc

因为角色出现奇数次。

这里我使用 ConcurrentHasMap 来存储字符和字符的出现次数,如果出现次数超过一次,则删除该字符。

import java.util.concurrent.ConcurrentHashMap;

public class RemoveConductive 

    public static void main(String[] args) 

        String s="aabcddkkbghff";

        String[] cvrtar=s.trim().split("");

        ConcurrentHashMap<String,Integer> hm=new ConcurrentHashMap<>();
        for(int i=0;i<cvrtar.length;i++)
            if(!hm.containsKey(cvrtar[i]))
                hm.put(cvrtar[i],1);
            
            else
                 hm.put(cvrtar[i],hm.get(cvrtar[i])+1);
            
        
        for(String ele:hm.keySet())
            if(hm.get(ele)>1)
                hm.remove(ele);
            
        
        for(String key:hm.keySet())
            System.out.print(key);
        
      

【讨论】:

【参考方案7】:

如果您不想使用额外的空间:

    String abc="developer";

    System.out.println("The unique characters are-");

    for(int i=0;i<abc.length();i++)
    
        for(int j=i+1;j<abc.length();j++)
        
            if(abc.charAt(i)==abc.charAt(j))
                abc=abc.replace(String.valueOf(abc.charAt(j))," ");
        
       
    System.out.println(abc);

时间复杂度 O(n^2) 且没有空间。

【讨论】:

【参考方案8】:

这个怎么样:)

for (int i=0; i< input.length();i++)
    if(input.indexOf(input.charAt(i)) == input.lastIndexOf(input.charAt(i)))
        System.out.println(input.charAt(i) + "  is unique");

【讨论】:

【参考方案9】:

此字符串算法用于打印字符串中的唯一字符。它在 O(n) 运行时运行,其中 n 是字符串的长度。它仅支持 ASCII 字符。

static String printUniqChar(String s) 
    StringBuilder buildUniq = new StringBuilder();
    boolean[] uniqCheck = new boolean[128];
    for (int i = 0; i < s.length(); i++) 
        if (!uniqCheck[s.charAt(i)]) 
            uniqCheck[s.charAt(i)] = true;
            if (uniqCheck[s.charAt(i)])
                buildUniq.append(s.charAt(i));
        
    

【讨论】:

不鼓励仅使用代码回答,因为它们没有为未来的读者提供太多信息,请对您所写的内容提供一些解释【参考方案10】:

这是一道面试题。找出字符串的所有唯一字符。 这是完整的解决方案。代码本身是不言自明的。

public class Test12 
    public static void main(String[] args) 
        String a = "ProtijayiGiniGina";

        allunique(a);
    

    private static void allunique(String a) 
        int[] count = new int[256];// taking count of characters
        for (int i = 0; i < a.length(); i++) 
            char ch = a.charAt(i);
            count[ch]++;
        

        for (int i = 0; i < a.length(); i++) 
            char chh = a.charAt(i);
            // character which has arrived only one time in the string will be printed out
            if (count[chh] == 1) 
                System.out.println("index => " + i + " and unique character => " + a.charAt(i));

            
        

    // unique


在 Python 中:

def firstUniqChar(a):
    count = [0] *256
    for i in a: count[ord(i)] += 1
    element = ""

    for item in a:
        if (count[ord(item)] == 1):
            element = item;
            break;
    return element        


a = "GiniGinaProtijayi";
print(firstUniqChar(a)) # output is P

【讨论】:

【参考方案11】:
public static String input = "10 5 5 10 6 6 2 3 1 3 4 5 3";

public static void uniqueValue (String numbers) 
    String [] str = input.split(" ");
    Set <String> unique = new HashSet <String> (Arrays.asList(str));
    System.out.println(unique);

    for (String value:unique) 
        int count = 0;
        for ( int i= 0; i<str.length; i++) 
            if (value.equals(str[i])) 
                count++;
            
        
        System.out.println(value+"\t"+count);
    

public static void main(String [] args) 
    uniqueValue(input);

【讨论】:

【参考方案12】:
public class UniqueCharactersInString 


 public static void main(String []args)

    String input = "aabbcc";
    String output = uniqueString(input);

    System.out.println(output);
 

 public static String uniqueString(String s)
     HashSet<Character> uniques = new HashSet<>();
     uniques.add(s.charAt(0));
     String out = "";
     out += s.charAt(0);

     for(int i =1; i < s.length(); i++)
         if(!uniques.contains(s.charAt(i)))
             uniques.add(s.charAt(i));
             out += s.charAt(i);
         
     
     return out;
 

这个答案有什么不足之处?它与其他答案相比如何?

【讨论】:

不鼓励仅使用代码的答案。为了帮助未来的读者,请解释一下你在做什么!【参考方案13】:

根据您想要的输出,您可以用空白字符替换已经存在的每个字符。

public static void uniqueCharacters(String test)
  String temp = "";
  for(int i = 0; i < test.length(); i++)
      if (temp.indexOf(test.charAt(i)) == - 1)
         temp = temp + test.charAt(i);
       else 
         temp.replace(String.valueOf(temp.charAt(i)), "");
      
 

System.out.println(temp + " ");

【讨论】:

【参考方案14】:
public void uniq(String inputString) 
    String result = "";
    int inputStringLen = inputStr.length();
    int[] repeatedCharacters = new int[inputStringLen];
    char inputTmpChar;
    char tmpChar;

    for (int i = 0; i < inputStringLen; i++) 
        inputTmpChar = inputStr.charAt(i);
        for (int j = 0; j < inputStringLen; j++) 
            tmpChar = inputStr.charAt(j);
            if (inputTmpChar == tmpChar)
                repeatedCharacters[i]++;
        
    

    for (int k = 0; k < inputStringLen; k++)  
        inputTmpChar = inputStr.charAt(k);
        if (repeatedCharacters[k] == 1)
            result = result + inputTmpChar + " ";
    

    System.out.println ("Unique characters: " + result);

在第一个 for 循环中,我计算字符在字符串中重复的次数。 在第二行中,我正在寻找重复一次的字符。

【讨论】:

【参考方案15】:

package extra;

public class TempClass 

    public static void main(String[] args) 
        // TODO Auto-generated method stub
        String abcString="hsfj'pwue2hsu38bf74sa';fwe'rwe34hrfafnosdfoasq7433qweid";
        char[] myCharArray=abcString.toCharArray();
        TempClass mClass=new TempClass();

        mClass.countUnique(myCharArray);
        mClass.countEach(myCharArray);
    
    /**
     * This is the program to find unique characters in array.
     * @add This is nice.
     * */
    public void countUnique(char[] myCharArray) 
        int arrayLength=myCharArray.length;
        System.out.println("Array Length is: "+arrayLength);
        char[] uniqueValues=new char[myCharArray.length];
        int uniqueValueIndex=0;
        int count=0;
        for(int i=0;i<arrayLength;i++) 
            for(int j=0;j<arrayLength;j++) 
                if (myCharArray[i]==myCharArray[j] && i!=j) 
                    count=count+1;
                
            
            if (count==0) 
                uniqueValues[uniqueValueIndex]=myCharArray[i];
                uniqueValueIndex=uniqueValueIndex+1;
                count=0;
            
            count=0;
        
        for(char a:uniqueValues) 
            System.out.println(a);
        
    
    /**
     * This is the program to find count each characters in array.
     * @add This is nice.
     * */
    public void countEach(char[] myCharArray) 

    


【讨论】:

添加解释以帮助用户了解问题的实际出处。【参考方案16】:

这里 str 将是您查找唯一字符的字符串。

function getUniqueChars(str)
let uniqueChars = '';
for(let i = 0; i< str.length; i++)
  for(let j= 0; j< str.length; j++) 
    if(str.indexOf(str[i]) === str.lastIndexOf(str[j])) 
       uniqueChars += str[i];
     
   
 
 return uniqueChars;    

【讨论】:

【参考方案17】:

步骤一: 为了找到字符串中的唯一字符,我首先从用户那里获取了字符串。 Step2: 使用java中的内置函数将输入字符串转换为charArray。 步骤 3: 考虑两个 HashSet(set1 用于存储所有字符,即使它被重复,set2 用于仅存储唯一字符。 Step4 : 对数组运行 for 循环并检查 set1 中是否不存在特定字符,然后将其添加到 set1 和 set2 中。如果该特定字符已经存在于 set1 中,则将其再次添加到 set1 但将其从 set2 中删除。(当特定字符重复奇数次时,此 else 部分很有用)。 Step5 : 现在 set2 将只有唯一字符。因此,只需打印该 set2。

public static void main(String[] args)

    Scanner input = new Scanner(System.in);
    String str = input.next();
    char arr[] = str.toCharArray();
    
    HashSet<Character> set1=new HashSet<Character>();
    HashSet<Character> set2=new HashSet<Character>();

    
    for(char i:arr)
    
        if(set1.contains(i))
        
            set1.add(i);
            set2.remove(i);
            
        
        else
        
            
            set1.add(i);
            set2.add(i);
        
    
    
    System.out.println(set2); 


【讨论】:

【参考方案18】:
public static void main(String[] args) 
    String s = "aaabcdd";
    char a[] = s.toCharArray();
    List duplicates = new ArrayList();
    List uniqueElements = new ArrayList();
    for (int i = 0; i < a.length; i++) 
        uniqueElements.add(a[i]);
        for (int j = i + 1; j < a.length; j++) 
            if (a[i] == a[j]) 
                duplicates.add(a[i]);
                break;
            
        
    
    uniqueElements.removeAll(duplicates);
    System.out.println(uniqueElements);
    System.out.println("First Unique : "+uniqueElements.get(0));


输出: [b,c] 第一个独特的:b

【讨论】:

【参考方案19】:
import java.util.*;
public class Sameness
   public static void main (String[]args)
   Scanner kb = new Scanner (System.in); 
     String word = "";

     System.out.println("Enter a word: ");
     word = kb.nextLine();

     uniqueCharacters(word); 

public static void uniqueCharacters(String test)
     for(int i=0;i<test.length();i++)
         if(test.lastIndexOf(test.charAt(i))!=i)
         test=test.replaceAll(String.valueOf(test.charAt(i)),"");
     
  System.out.println(test);



【讨论】:

请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。

以上是关于java字符串打印的主要内容,如果未能解决你的问题,请参考以下文章

java如何打印出任意给定的空格

java 用Java打印字符串格式的数组

java打印数组

我如何在java中打印到打印机2个字符串

Java 字符串在打印时终止

在java中用键盘输入多个字符串,并将它们打印出来