2017-06-05 2 views
0

J'ai un petit segment de code que je ne sais pas comment réparer. Ceci est:Scanners Java: Comment conserver la même ligne après une entrée

System.out.print("y="); 
while(!scan.hasNextInt()) scan.next(); 
m = scan.nextInt(); 
System.out.print("x+"); 
while(!scan.hasNextInt()) scan.next(); 
b = scan.nextInt(); 

La sortie est: y = 3 sur une ligne, et x + 4 sur la suivante. Je voudrais qu'ils soient sur la même ligne. Comment puis-je faire cela?

+0

Pourquoi avez-vous besoin alors? –

+0

est-il bien pour vous d'avoir une entrée comme celle-ci - 3 4? – tom

Répondre

0

Je ne suis pas sûr de ce que vous voulez faire là mais peut-être vous avez juste besoin d'utiliser un System.out.print? en bas de votre code avec l'exemple:

System.out.print("y= %d x+%d", m , b); 
+0

FIY:% d dans le message de chaîne représente la valeur int – Rivalez

+0

Cela ne répond pas à la question. OP veut après avoir appuyé sur 'Entrée' pour sauvegarder une ligne et imprimer le résultat. – Yahya

+0

Rivalez, c'est la solution facile. Je veux que l'utilisateur soit capable de construire l'équation linéaire comme le type. Yahya a la bonne idée. – Electrimatics

0

Il est un peu déroutant de comprendre votre question pourquoi vous le voulez?

Mais voici un extrait que vous pouvez essayer et voir si cela peut vous être utile!

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class so1 { 
    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String arrayStr = br.readLine(); 
     String[] auxStr = arrayStr.split(" "); 
     int[] arr = new int[2]; 

     for(int i=0;i<auxStr.length;i++){ 
      arr[i]= Integer.parseInt(auxStr[i]); 
     } 

     System.out.println("y="+arr[0] + " x+"+arr[1]); 
    } 

} 

Voici ce que vous pouvez -

3 4 
y=3 x+4 

Mettez à jour votre question si vous trouvez pas utile. Je vais mettre à jour en conséquence.

+0

Ce n'est pas vraiment ce que je voulais, mais la question a été répondue. Il semble qu'il n'y a pas de moyen facile d'obtenir ce que je voulais arriver. Merci! – Electrimatics

+0

heureux de savoir que .. – tom

0

On dirait que c'est la façon dont votre programme ressemble:

y=3<newline> 
x+5<newline> 

Mais vous voulez que ça ressemble à:

y=3x+5 

Les nouvelles lignes problématiques proviennent de l'utilisation du scanner et de la nature inhérente en mémoire tampon de la norme contribution. Pour que le scanner sache qu'il a atteint la fin du nombre, il doit y avoir des espaces (espace, retour à la ligne, etc.) Et pour que le programme reçoive l'entrée de STDIN, la longueur du caractère de l'int doit être plus grand que la taille de la mémoire tampon, ou ENTER doit être poussé. TL; DR - Ce que vous voulez est très difficile à faire, et peut-être impossible, juste en utilisant la norme de base. Si vous voulez vraiment la sortie que vous désirez, vous aurez probablement besoin de trouver une bibliothèque pour interagir avec la console et Utiliser ça.

Cependant, si vous recadrez votre entrée, vous pourriez être en mesure d'obtenir quelque chose de presque aussi bon:

enter intercept: 5<enter> 
enter slope:  3<enter> 
y=3x+5 

Votre code, modifié pour produire cette sortie:

System.out.print("enter intercept:"); 
while(!scan.hasNextInt()) scan.next(); 
m = scan.nextInt(); 
System.out.print("enter slope: "); 
while(!scan.hasNextInt()) scan.next(); 
b = scan.nextInt(); 
System.out.println("y="+m+"x+"+b); 
+0

J'ai pensé à cette solution, mais je voulais voir si je pouvais imprimer ce que vous avez écrit sur le dessus. Merci! – Electrimatics